예제 #1
0
void PRenderer::render(PRenderState *renderState)
{
    PASSERT(m_scene->mainCamera() != P_NULL);

    // Create a default render pass if none exists
    if (m_renderPassArray.isEmpty())
    {
        PRenderPass *renderPass = PNEW(PRenderPass("default", m_scene));
        renderPass->setCamera(m_scene->mainCamera());
        renderPass->queue()->addNodes(m_scene->root());
        renderPass->target()->setColorClearValue(m_backgroundColor);

        PShadowPass *shadowPass = PNEW(PShadowPass("shadow", m_scene));
        
        addRenderPass(shadowPass);
        addRenderPass(renderPass);
    }

    if (m_renderPassArray.isEmpty())
    {
        PLOG_WARNING("There is no valid render pass existing.");
        return ;
    }

    for (puint32 i = 0; i < m_renderPassArray.size(); ++i)
    {
        m_renderPassArray[i]->render(renderState);
    }
}
예제 #2
0
파일: MainCamera00.cpp 프로젝트: taqu/lime
    void MainCamera00::resetRenderPasses()
    {
        ComponentCamera::resetRenderPasses();
        lfw::s32 passIndex;

        passIndex = findRenderPass(lfw::graph::RenderPassID_GBuffer);
        RenderPassTerrain* renderPassTerrain = LNEW debug::RenderPassTerrain;
        renderPassTerrain->set(debug::RenderPassTerrain::Type_Land);
        reinterpret_cast<lfw::graph::RenderPassGBuffer*>(getRenderPass(passIndex))->addSubPass(renderPassTerrain);

        passIndex = findRenderPass(lfw::graph::RenderPassID_Transparent);
        renderPass_ = LNEW debug::RenderPassProcedural;
        renderPass_->set(debug::RenderPassProcedural::Type_Space);
        addRenderPass(passIndex, renderPass_);

    }