Показать сообщение отдельно
Старый 03.03.2015, 01:31   #812
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

Возможно кодом будет понятнее о чем я.
    
for( auto pLight : g_pointLightList ) {
        if( g_camera->frustum.IsSphereInside( pLight->GetRealPosition(), pLight->GetRadius() ) && pLight->IsVisible() ) {
            gpDevice->SetRenderState( D3DRS_COLORWRITEENABLE, 0x00000000 );
            gpDevice->SetRenderState( D3DRS_STENCILFUNC, D3DCMP_ALWAYS );
            gpDevice->SetRenderState( D3DRS_STENCILPASS, D3DSTENCILOP_KEEP );

            RenderIcosphereIntoStencilBuffer( pLight );

            mPointLightShader->SetLight( g_camera->invViewProjection, pLight );

            mFullscreenQuad->Bind();        

            gpDevice->SetRenderState( D3DRS_COLORWRITEENABLE, 0xFFFFFFFF );
            gpDevice->SetRenderState( D3DRS_STENCILFUNC, D3DCMP_NOTEQUAL );
            gpDevice->SetRenderState( D3DRS_STENCILPASS, D3DSTENCILOP_ZERO );
            // quad render
            mFullscreenQuad->Render();
        }
    }
Сферка жи помечает фрагменты реально попадающие в радиус действия света. Она рисуется только в трафарет.
__________________

(Offline)
 
Ответить с цитированием