bool VLightClippingVolumeRenderer::RenderLightClippingVolumeHelper(VisLightSource_cl *pLight,VStateGroupDepthStencil& sg) { VLightClippingVolumeComponent* pComponent = pLight->Components().GetComponentOfBaseType<VLightClippingVolumeComponent>(); if(pComponent != NULL && pComponent->GetVolume() != NULL && m_spLightClippingVolumeStencilFill) { INSERT_PERF_MARKER_SCOPE("VLightClippingVolumeRenderer::RenderLightClippingVolume"); VisRenderStates_cl::SetDepthStencilState(sg); VCustomVolumeObject* pVolume = pComponent->GetVolume(); VisStaticMesh_cl* pStaticMesh = pVolume->GetStaticMesh(); if(!pStaticMesh) return false; VisMeshBuffer_cl* pMeshBuffer = pStaticMesh->GetMeshBuffer(); if(!pMeshBuffer || pMeshBuffer->GetIndexCount() <= 0) return false; Vision::RenderLoopHelper.BeginMeshRendering(); Vision::RenderLoopHelper.ResetMeshStreams(); Vision::RenderLoopHelper.AddMeshStreams(pMeshBuffer, m_spLightClippingVolumeStencilFill->GetShader(0)->GetStreamMask() | VERTEX_STREAM_INDEXBUFFER); hkvMat4 transform; transform.setIdentity (); transform.setRotationalPart(pVolume->GetRotationMatrix()); transform.setTranslation(pVolume->GetPosition()); transform.setScalingFactors(pVolume->GetScale()); Vision::RenderLoopHelper.SetMeshTransformationMatrix(transform); Vision::RenderLoopHelper.RenderMeshes(m_spLightClippingVolumeStencilFill->GetShader(0), pMeshBuffer->GetPrimitiveType(), 0, pMeshBuffer->GetIndexCount() / 3, pMeshBuffer->GetVertexCount()); Vision::RenderLoopHelper.EndMeshRendering(); return true; } return false; }