Example #1
0
// 描画.
void UpscaleGeometryRenderingApp::RenderInternal(izanagi::graph::CGraphicsDevice* device)
{
    if (m_enableUpscale) {
        renderColorPass(device);
        renderGeometryPass(device);
        renderFinalPass(device);

        device->SetTexture(0, IZ_NULL);
        m_gbuffer.drawBuffers(device);
    }
    else {
        const auto& camera = GetCamera();

        const auto& mtxW2C = camera.GetParam().mtxW2C;

        auto* shd = m_shdColorPass.m_program;

        device->SetShaderProgram(shd);

        auto hW2C = shd->GetHandleByName("mtxW2C");
        shd->SetMatrix(device, hW2C, mtxW2C);

        m_scene.render(device, shd);
    }
}
Example #2
0
void Renderer::render()
{

    for(auto cameraIter = activeCameras.begin(); cameraIter < activeCameras.end(); cameraIter++){
        (*cameraIter)->update();

    // Geometry pass
    renderGeometryPass( **cameraIter );
    // light pass
    renderLightPass( **cameraIter );
    
    }
}
Example #3
0
GLUSboolean update(GLUSfloat time)
{
    m_scale += 0.05f;
    renderGeometryPass(); 
    /* Render the scene again to populate the depth buffer.
     * Can optimized because the value of depths are already
     * written in the gbuffer fbo */
    renderDepthPass();
    beginLightPasses();
    renderDirectionalLightPass();
    renderPointLights();

    return GLUS_TRUE;
}
void SceneRenderer::render(const Camera *camera)
{
	assert(camera);
	renderGeometryPass(camera);

	// bind the geometry buffer textures
	for (unsigned int i = 0; i < 3; ++i)
	{
		glActiveTexture(GL_TEXTURE0 + i);
		glBindTexture(GL_TEXTURE_2D, gBuffer->getTexture(i));
	}

	renderAmbientOcclusionPass();
	renderLightingPass(camera);

	// unbind the geometry buffer textures
	for (unsigned int i = 0; i < 3; ++i)
	{
		glActiveTexture(GL_TEXTURE0 + i);
		glBindTexture(GL_TEXTURE_2D, 0);
	}

	renderBlurPass();
}