コード例 #1
0
ファイル: render_dx10.cpp プロジェクト: chenbk85/3dlearn
static void ExpLuminance(void)
{
	ID3D10EffectTechnique *pShader = g_pExposureFX->GetTechniqueByName("ExpLuminance");
	ID3D10EffectShaderResourceVariable *pImage0_var = g_pExposureFX->GetVariableByName("Image0")->AsShaderResource();

	g_pDevice->OMSetRenderTargets(1, &g_pRTView[LUMINANCE_TEMP], NULL);

	pImage0_var->SetResource(g_pSRView[LUMINANCE_CURRENT]);
	pShader->GetPassByIndex(0)->Apply(0);

	DrawFullScreenQuad();

	SwapRenderTarget(LUMINANCE_CURRENT, LUMINANCE_TEMP);
}
コード例 #2
0
ファイル: render_dx10.cpp プロジェクト: chenbk85/3dlearn
static void AdaptiveLuminance(void)
{
	ID3D10EffectTechnique *pShader = g_pExposureFX->GetTechniqueByName("AdaptiveLuminance");
	ID3D10EffectShaderResourceVariable *pImage0_var = g_pExposureFX->GetVariableByName("Image0")->AsShaderResource();
	ID3D10EffectShaderResourceVariable *pImage1_var = g_pExposureFX->GetVariableByName("Image1")->AsShaderResource();
	ID3D10EffectVectorVariable *pAdaptiveSpeed_var = g_pExposureFX->GetVariableByName("vAdaptiveSpeed")->AsVector();

	Vector4 vSpeed(0.1f);

	pImage0_var->SetResource(g_pSRView[LUMINANCE_PREVIOUS]);
	pImage1_var->SetResource(g_pSRView[LUMINANCE_CURRENT]);
	pAdaptiveSpeed_var->SetFloatVector( (float*)&vSpeed[0] );

	g_pDevice->OMSetRenderTargets(1, &g_pRTView[LUMINANCE_TEMP], NULL);

	pShader->GetPassByIndex(0)->Apply(0);
	DrawFullScreenQuad();

	SwapRenderTarget(LUMINANCE_TEMP, LUMINANCE_PREVIOUS);
}
コード例 #3
0
ファイル: render_dx9.cpp プロジェクト: as2120/ZNginx
void ExpLuminance(void)
{
	LPDIRECT3DDEVICE9 device = GutGetGraphicsDeviceDX9();

	device->SetRenderTarget(0, g_pFrameSurface[LUMINANCE_TEMP]);

	D3DXHANDLE shader = g_pExposureEffect->GetTechniqueByName("ExpLuminance");
	D3DXHANDLE image_var = g_pExposureEffect->GetParameterByName(NULL, "Image");
	
	g_pExposureEffect->SetTechnique(shader);
	g_pExposureEffect->SetTexture(image_var, g_pFrameBuffer[LUMINANCE_CURRENT]);

	g_pExposureEffect->Begin(NULL, 0);
	g_pExposureEffect->BeginPass(0);

	DrawFullScreenQuad(&g_Image1x1);

	g_pExposureEffect->EndPass();
	g_pExposureEffect->End();

	SwapRenderTarget(LUMINANCE_TEMP, LUMINANCE_CURRENT);
}
コード例 #4
0
ファイル: render_dx9.cpp プロジェクト: as2120/ZNginx
void AdaptiveLuminance(void)
{
	static int count = 0;
	LPDIRECT3DDEVICE9 device = GutGetGraphicsDeviceDX9();

	if ( count )
	{
		device->SetRenderTarget(0, g_pFrameSurface[LUMINANCE_TEMP]);

		D3DXHANDLE shader = g_pExposureEffect->GetTechniqueByName("AdaptiveLuminance");
		g_pExposureEffect->SetTechnique(shader);

		Vector4 vSpeed(0.03f);

		D3DXHANDLE speed_var = g_pExposureEffect->GetParameterByName(NULL, "vAdaptiveSpeed");
		D3DXHANDLE image0_var = g_pExposureEffect->GetParameterByName(NULL, "Image");
		D3DXHANDLE image1_var = g_pExposureEffect->GetParameterByName(NULL, "Image2");

		g_pExposureEffect->SetVector(speed_var, (D3DXVECTOR4*)&vSpeed);
		g_pExposureEffect->SetTexture(image0_var, g_pFrameBuffer[LUMINANCE_PREVIOUS]);
		g_pExposureEffect->SetTexture(image1_var, g_pFrameBuffer[LUMINANCE_CURRENT]);

		g_pExposureEffect->Begin(NULL, 0);
		g_pExposureEffect->BeginPass(0);

		DrawFullScreenQuad(&g_Image1x1);

		g_pExposureEffect->EndPass();
		g_pExposureEffect->End();
	}
	else
	{
		device->StretchRect(g_pFrameSurface[LUMINANCE_CURRENT], NULL, g_pFrameSurface[LUMINANCE_TEMP], NULL, D3DTEXF_POINT);
	}
	// copy
	//device->StretchRect(g_pFrameSurface[LUMINANCE_TEMP], NULL, g_pFrameSurface[LUMINANCE_PREVIOUS], NULL, D3DTEXF_POINT);
	SwapRenderTarget(LUMINANCE_TEMP, LUMINANCE_PREVIOUS);
	count++;
}