private static void Render(ISrvBindable textureArraySRV, ISrvBindable depthRead) { RC.VertexShader.Set(m_vs); if (MyRender11.Settings.DisplayTransparencyHeatMap) { if (MyRender11.DebugOverrides.OIT) { RC.PixelShader.Set(m_psDebugUniformAccumOIT); } else { RC.PixelShader.Set(m_psDebugUniformAccum); } } else { if (MyRender11.DebugOverrides.OIT) { RC.PixelShader.Set(m_psOIT); } else { RC.PixelShader.Set(m_ps); } } RC.SetVertexBuffer(0, null); RC.SetIndexBuffer(m_ib); RC.SetPrimitiveTopology(PrimitiveTopology.TriangleList); RC.AllShaderStages.SetConstantBuffer(1, m_activeListConstantBuffer); RC.AllShaderStages.SetSrv(0, depthRead); RC.PixelShader.SetSrvs(1, textureArraySRV); RC.VertexShader.SetSrv(0, m_particleBuffer); RC.VertexShader.SetSrv(1, m_emitterStructuredBuffer); RC.VertexShader.SetSrv(2, m_aliveIndexBuffer); ISrvBindable skybox = MyRender11.IsIntelBrokenCubemapsWorkaround ? MyGeneratedTextureManager.IntelFallbackCubeTex : (ISrvBindable)MyManagers.EnvironmentProbe.Cubemap; RC.VertexShader.SetSrv(MyCommon.SKYBOX_IBL_SLOT, skybox); // bind render target? if (!MyStereoRender.Enable) { RC.DrawIndexedInstancedIndirect(m_indirectDrawArgsBuffer, 0); } else { MyStereoRender.DrawIndexedInstancedIndirectGPUParticles(RC, m_indirectDrawArgsBuffer, 0); } MyRender11.ProcessDebugOutput(); RC.VertexShader.SetSrv(MyCommon.SKYBOX_IBL_SLOT, null); RC.AllShaderStages.SetSrv(0, null); }
private static void Render(SharpDX.Direct3D11.ShaderResourceView textureArraySRV, MyBindableResource depthRead) { RC.SetVS(m_vs); if (MyRender11.DebugOverrides.OIT) { RC.SetPS(m_psOIT); } else { RC.SetPS(m_ps); } RC.SetVB(0, null, 0); RC.SetIB(m_ib.Buffer, SharpDX.DXGI.Format.R32_UInt); RC.DeviceContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList; RC.SetCB(1, m_activeListConstantBuffer); RC.BindSRV(0, depthRead); RC.DeviceContext.PixelShader.SetShaderResources(1, textureArraySRV); RC.VSBindRawSRV(0, m_particleBuffer); RC.VSBindRawSRV(1, m_aliveIndexBuffer); RC.VSBindRawSRV(2, m_emitterStructuredBuffer); RC.DeviceContext.VertexShader.SetShaderResource(MyCommon.SKYBOX_IBL_SLOT, MyRender11.IsIntelBrokenCubemapsWorkaround ? Resources.MyTextures.GetView(Resources.MyTextures.IntelFallbackCubeTexId) : MyEnvironmentProbe.Instance.cubemapPrefiltered.SRV); RC.DeviceContext.VertexShader.SetShaderResource(MyCommon.SKYBOX2_IBL_SLOT, Resources.MyTextures.GetView(Resources.MyTextures.GetTexture(MyRender11.Environment.NightSkyboxPrefiltered, Resources.MyTextureEnum.CUBEMAP, true))); // bind render target? if (!MyStereoRender.Enable) { RC.DeviceContext.DrawIndexedInstancedIndirect(m_indirectDrawArgsBuffer.Buffer, 0); } else { MyStereoRender.DrawIndexedInstancedIndirectGPUParticles(RC, m_indirectDrawArgsBuffer.Buffer, 0); } MyRender11.ProcessDebugOutput(); RC.DeviceContext.PixelShader.SetShaderResource(MyCommon.SKYBOX_IBL_SLOT, null); RC.DeviceContext.PixelShader.SetShaderResource(MyCommon.SKYBOX2_IBL_SLOT, null); }