예제 #1
0
NzDeferredDOFPass::NzDeferredDOFPass()
{
	m_dofShader = BuildDepthOfFieldShader();
	m_dofShader->SendInteger(m_dofShader->GetUniformLocation("ColorTexture"), 0);
	m_dofShader->SendInteger(m_dofShader->GetUniformLocation("BlurTexture"), 1);
	m_dofShader->SendInteger(m_dofShader->GetUniformLocation("GBuffer1"), 2);

	m_gaussianBlurShader = NzShaderLibrary::Get("DeferredGaussianBlur");
	m_gaussianBlurShaderFilterLocation = m_gaussianBlurShader->GetUniformLocation("Filter");

	for (unsigned int i = 0; i < 2; ++i)
	{
		m_dofTextures[i] = new NzTexture;
		m_dofTextures[i]->SetPersistent(false);
	}

	m_bilinearSampler.SetAnisotropyLevel(1);
	m_bilinearSampler.SetFilterMode(nzSamplerFilter_Bilinear);
	m_bilinearSampler.SetWrapMode(nzSamplerWrap_Clamp);

	m_pointSampler.SetAnisotropyLevel(1);
	m_pointSampler.SetFilterMode(nzSamplerFilter_Nearest);
	m_pointSampler.SetWrapMode(nzSamplerWrap_Clamp);

	m_states.parameters[nzRendererParameter_DepthBuffer] = false;
}
예제 #2
0
	DeferredDOFPass::DeferredDOFPass()
	{
		m_dofShader = BuildDepthOfFieldShader();
		m_dofShader->SendInteger(m_dofShader->GetUniformLocation("ColorTexture"), 0);
		m_dofShader->SendInteger(m_dofShader->GetUniformLocation("BlurTexture"), 1);
		m_dofShader->SendInteger(m_dofShader->GetUniformLocation("GBuffer1"), 2);

		m_gaussianBlurShader = ShaderLibrary::Get("DeferredGaussianBlur");
		m_gaussianBlurShaderFilterLocation = m_gaussianBlurShader->GetUniformLocation("Filter");

		for (unsigned int i = 0; i < 2; ++i)
			m_dofTextures[i] = Texture::New();

		m_bilinearSampler.SetAnisotropyLevel(1);
		m_bilinearSampler.SetFilterMode(SamplerFilter_Bilinear);
		m_bilinearSampler.SetWrapMode(SamplerWrap_Clamp);

		m_pointSampler.SetAnisotropyLevel(1);
		m_pointSampler.SetFilterMode(SamplerFilter_Nearest);
		m_pointSampler.SetWrapMode(SamplerWrap_Clamp);

		m_states.depthBuffer = false;
	}