void Renderer::InitRendering() { // TO DO: NAPISAC SHADERY DO DIR LIGHT, SPOT LIGHT I POINT LIGHT I PRZETESTOWAC DZIALANIE!!!!!!!!!! DirectLightSurface = PrefabShape::GenerateRectangle(); SpotLightSurface = PrefabShape::GenerateRectangle(); //PointLightSurface = PrefabShape::GenerateRectangle(); cShaderManager *ShaderMgr = cShaderManager::GetInstance(); cProgramShader *DirectLightShader = ShaderMgr->GetProgram( "DirectLight" ); cProgramShader *SpotLightShader = ShaderMgr->GetProgram( "SpotLight" ); //cProgramShader *PointLightShader = ShaderMgr->GetProgram( "PointLight" ); MaterialManager& MatMgr = MaterialManager::GetSingleton(); //auto DirLight = MatMgr.GetMaterialPtr( "DirectLight" ); RenderPass *DirectLight = new RenderPass(); RenderPass *SpotLight = new RenderPass(); //RenderPass *PointLight = new RenderPass(); DirectLight->SetShader( DirectLightShader ); SpotLight->SetShader( SpotLightShader ); //PointLight->SetShader( PointLightShader ); Material *DirectLightMaterial = new Material(); Material *SpotLightMaterial = new Material(); //Material *PointLightMaterial = new Material(); DirectLightMaterial->AddRenderPass( DirectLight ); SpotLightMaterial->AddRenderPass( SpotLight ); //PointLightMaterial->AddRenderPass( PointLight ); DirectLightSurface->SetMaterial( DirectLightMaterial ); SpotLightSurface->SetMaterial( SpotLightMaterial ); //PointLightSurface->SetMaterial( pPointLightMaterial ); pDeferred = new Fbo( (GLuint) mViewSize.x, (GLuint)mViewSize.y ); mLayers.push_back( new Texture2D( (int)mViewSize.x, (int)mViewSize.y, 0, FORMAT::RGB ) ); mLayers.push_back( new Texture2D( (int)mViewSize.x, (int)mViewSize.y, 0, FORMAT::RGBA16F ) ); mLayers.push_back( new Texture2D( (int)mViewSize.x, (int)mViewSize.y, 0, FORMAT::RGB ) ); mLayers.push_back( new Texture2D( (int)mViewSize.x, (int)mViewSize.y, 0, FORMAT::RGB ) ); //mLayers.push_back( new Texture2D( (int)mViewSize.x, (int)mViewSize.y, 0, FORMAT::RGB ) ); mLayers.push_back( new Texture2D( (int)mViewSize.x, (int)mViewSize.y, 0, FORMAT::DEPTH24 ) ); pDeferred->AddTextureAtachament( BUFFERTARGET::COLOR_ATTACHMENT0, mLayers[0] ); pDeferred->AddTextureAtachament( BUFFERTARGET::COLOR_ATTACHMENT1, mLayers[1] ); pDeferred->AddTextureAtachament( BUFFERTARGET::COLOR_ATTACHMENT2, mLayers[2] ); pDeferred->AddTextureAtachament( BUFFERTARGET::COLOR_ATTACHMENT3, mLayers[3] ); //pDeferred->AddTextureAtachament( BUFFERTARGET::COLOR_ATTACHMENT4, mLayers[4] ); pDeferred->AddDepthAtachament( mLayers[4] ); pDeferred->SetDrawBuffers( COLOR_ATTACHMENT0, COLOR_ATTACHMENT1, COLOR_ATTACHMENT2, COLOR_ATTACHMENT3/*, COLOR_ATTACHMENT4*/ ); TextureSampler *sampler1 = new TextureSampler( mLayers[0], 0, TF_LINEAR, TF_LINEAR, WM_CLAMP, WM_CLAMP ); TextureSampler *sampler2 = new TextureSampler( mLayers[1], 1, TF_LINEAR, TF_LINEAR, WM_CLAMP, WM_CLAMP ); TextureSampler *sampler3 = new TextureSampler( mLayers[2], 2, TF_LINEAR, TF_LINEAR, WM_CLAMP, WM_CLAMP ); //TextureSampler *sampler4 = new TextureSampler( mLayers[3], 3, TF_LINEAR, TF_LINEAR, WM_CLAMP, WM_CLAMP ); //TextureSampler *sampler5 = new TextureSampler( mLayers[4], 4 ); DirectLight->AddTexture( sampler1 ); // OutputAmbient = 0 DirectLight->AddTexture( sampler2 ); // OutputNormal =1 DirectLight->AddTexture( sampler3 ); // OutputPosition =2 //PointLight->AddTexture( sampler4 ); // OutputDiffuse =3 //PointLight->AddTexture( sampler5 ); SpotLight->AddTexture( sampler1 ); // OutputAmbient = 0 SpotLight->AddTexture( sampler2 ); // OutputNormal =1 SpotLight->AddTexture( sampler3 ); // OutputPosition =2 //PointLight->AddTexture( sampler1 ); //OutputAmbient = 0 //PointLight->AddTexture( sampler2 ); // OutputNormal =1 //PointLight->AddTexture( sampler3 ); // OutputPosition =2 }