void AddProbe(int nProbe, MyCullQuery cullQuery) { MyImmediateRC.RC.ClearDsv(CubemapDepth.SubresourceDsv(nProbe), DepthStencilClearFlags.Depth, 1, 0); MyImmediateRC.RC.ClearRtv(m_workCubemap.SubresourceRtv(nProbe), Color4.Black); var localViewProj = PrepareLocalEnvironmentMatrix(MyRender11.Environment.Matrices.CameraPosition - m_position, new Vector2I(CubeMapResolution, CubeMapResolution), nProbe, MyRender11.Settings.EnvMapDepth); var viewProj = MatrixD.CreateTranslation(-m_position) * localViewProj; cullQuery.AddForwardPass(ref localViewProj, ref viewProj, new MyViewport(0, 0, CubeMapResolution, CubeMapResolution), CubemapDepth.SubresourceDsv(nProbe), m_workCubemap.SubresourceRtv(nProbe)); cullQuery.FrustumCullQueries[cullQuery.Size - 1].Type = MyFrustumEnum.EnvironmentProbe; }
void AddProbe(int nProbe, MyCullQuery cullQuery) { MyImmediateRC.RC.ClearDsv(CubemapDepth.SubresourceDsv(nProbe), DepthStencilClearFlags.Depth, 1, 0); MyImmediateRC.RC.ClearRtv(m_workCubemap.SubresourceRtv(nProbe), Color4.Black); var localViewProj = PrepareLocalEnvironmentMatrix(MyRender11.Environment.Matrices.CameraPosition - m_position, new Vector2I(CubeMapResolution, CubeMapResolution), nProbe, MyRender11.Settings.EnvMapDepth); var viewProj = MatrixD.CreateTranslation(-m_position)*localViewProj; cullQuery.AddForwardPass(ref localViewProj, ref viewProj, new MyViewport(0, 0, CubeMapResolution, CubeMapResolution), CubemapDepth.SubresourceDsv(nProbe), m_workCubemap.SubresourceRtv(nProbe)); cullQuery.FrustumCullQueries[cullQuery.Size - 1].Type = MyFrustumEnum.EnvironmentProbe; }
internal void StepUpdateProbe(MyCullQuery cullQuery) { if (state == 0) { position = MyEnvironment.CameraPosition;// +Vector3.UnitY * 4; } if (state < 6) { int faceId = state; MyImmediateRC.RC.DeviceContext.ClearDepthStencilView(m_cubemapDepth.SubresourceDsv(faceId), DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil, 1, 0); MyImmediateRC.RC.DeviceContext.ClearRenderTargetView(workCubemap.SubresourceRtv(faceId), new Color4(0, 0, 0, 0)); var localViewProj = PrepareLocalEnvironmentMatrix(MyEnvironment.CameraPosition - position, new Vector2I(CubeMapResolution, CubeMapResolution), faceId, 10000.0f); var viewProj = MatrixD.CreateTranslation(-position) * localViewProj; cullQuery.AddForwardPass(ref localViewProj, ref viewProj, new MyViewport(0, 0, CubeMapResolution, CubeMapResolution), m_cubemapDepth.SubresourceDsv(faceId), workCubemap.SubresourceRtv(faceId)); ++state; return; } }
internal void StepUpdateProbe(MyCullQuery cullQuery) { if (state == 0) { position = MyRender11.Environment.CameraPosition;// +Vector3.UnitY * 4; } if (state < 6) { int faceId = state; MyImmediateRC.RC.DeviceContext.ClearDepthStencilView(m_cubemapDepth.SubresourceDsv(faceId), DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil, 1, 0); MyImmediateRC.RC.DeviceContext.ClearRenderTargetView(workCubemap.SubresourceRtv(faceId), new Color4(0, 0, 0, 0)); var localViewProj = PrepareLocalEnvironmentMatrix(MyRender11.Environment.CameraPosition - position, new Vector2I(CubeMapResolution, CubeMapResolution), faceId, 10000.0f); var viewProj = MatrixD.CreateTranslation(-position) * localViewProj; cullQuery.AddForwardPass(ref localViewProj, ref viewProj, new MyViewport(0, 0, CubeMapResolution, CubeMapResolution), m_cubemapDepth.SubresourceDsv(faceId), workCubemap.SubresourceRtv(faceId)); ++state; return; } }