public void MarkOneCascade(int numCascade, IDepthStencil depthStencil, Matrix worldToProjection, ICascadeShadowMapSlice slice) { MyRenderContext RC = MyRender11.RC; RC.SetVertexBuffer(0, m_vertexBuffer); RC.SetIndexBuffer(m_indexBuffer); RC.SetInputLayout(m_inputLayout); RC.SetViewport(0, 0, MyRender11.ResolutionI.X, MyRender11.ResolutionI.Y); RC.SetDepthStencilState(MyDepthStencilStateManager.MarkIfInsideCascadeOld[numCascade], 0xf - numCascade); RC.SetRasterizerState(MyRasterizerStateManager.NocullRasterizerState); RC.SetPrimitiveTopology(PrimitiveTopology.TriangleList); MyMapping mapping = MyMapping.MapDiscard(m_markerConstantBuffer); Matrix shadowToProjection = slice.MatrixShadowToWorldAt0Space * worldToProjection; shadowToProjection = Matrix.Transpose(shadowToProjection); mapping.WriteAndPosition(ref shadowToProjection); mapping.Unmap(); RC.VertexShader.SetConstantBuffer(6, m_markerConstantBuffer); RC.VertexShader.Set(m_vsMarker); RC.PixelShader.SetSrv(0, depthStencil.SrvDepth); //RC.PixelShader.SetSrv(1, depthStencil.SrvStencil); RC.PixelShader.Set(m_psMarker); RC.SetRtv(depthStencil, MyDepthStencilAccess.DepthReadOnly); RC.DrawIndexed(36, 0, 0); }
public void MarkOneCascade(int numCascade, IDepthStencil depthStencil, Matrix worldToProjection, ICascadeShadowMapSlice slice) { MyRenderContext RC = MyRender11.RC; RC.SetVertexBuffer(0, m_vertexBuffer.Buffer, m_vertexBuffer.Stride); RC.SetIndexBuffer(m_indexBuffer.Buffer, m_indexBuffer.Format); RC.SetInputLayout(m_inputLayout); RC.SetViewport(0, 0, MyRender11.ResolutionI.X, MyRender11.ResolutionI.Y); RC.SetDepthStencilState(MyDepthStencilStateManager.MarkIfInsideCascadeOld[numCascade], 0xf - numCascade); RC.SetRasterizerState(MyRasterizerStateManager.NocullRasterizerState); RC.SetPrimitiveTopology(PrimitiveTopology.TriangleList); MyMapping mapping = MyMapping.MapDiscard(m_markerConstantBuffer); Matrix shadowToProjection = slice.MatrixShadowToWorldAt0Space * worldToProjection; shadowToProjection = Matrix.Transpose(shadowToProjection); mapping.WriteAndPosition(ref shadowToProjection); mapping.Unmap(); RC.VertexShader.SetConstantBuffer(6, m_markerConstantBuffer); RC.VertexShader.Set(m_vsMarker); RC.PixelShader.SetSrv(0, depthStencil.SrvDepth); //RC.PixelShader.SetSrv(1, depthStencil.SrvStencil); RC.PixelShader.Set(m_psMarker); RC.SetRtv(depthStencil, MyDepthStencilAccess.DepthReadOnly); RC.DrawIndexed(36, 0, 0); }