@@ -413,8 +413,7 @@ void main(in float4 Pos : SV_Position,
413
413
out float4 MotionVec : SV_Target3,
414
414
out float4 IBL : SV_Target4)
415
415
{
416
- Color.rgb = SampleEnvMap(ClipPos);
417
- Color.a = 1.0;
416
+ Color = SampleEnvMap(ClipPos);
418
417
419
418
Normal = float4(0.0, 0.0, 0.0, 0.0);
420
419
MaterialData = float4(0.0, 0.0, 0.0, 0.0);
@@ -1127,10 +1126,13 @@ void GLTFViewer::Render()
1127
1126
TMAttribs.fLuminanceSaturation = 1.0 ;
1128
1127
1129
1128
EnvMapRenderer::RenderAttribs EnvMapAttribs;
1130
- EnvMapAttribs.pContext = m_pImmediateContext;
1131
- EnvMapAttribs.pEnvMap = pEnvMapSRV;
1132
- EnvMapAttribs.AverageLogLum = m_ShaderAttribs.AverageLogLum ;
1133
- EnvMapAttribs.MipLevel = m_EnvMapMipLevel;
1129
+ EnvMapAttribs.pContext = m_pImmediateContext;
1130
+ EnvMapAttribs.pEnvMap = pEnvMapSRV;
1131
+ EnvMapAttribs.AverageLogLum = m_ShaderAttribs.AverageLogLum ;
1132
+ EnvMapAttribs.MipLevel = m_EnvMapMipLevel;
1133
+ // It is essential to write zero alpha because we use alpha channel
1134
+ // to attenuate SSR for transparent surfaces.
1135
+ EnvMapAttribs.Alpha = 0.0 ;
1134
1136
EnvMapAttribs.ConvertOutputToSRGB = (m_RenderParams.Flags & GLTF_PBR_Renderer::PSO_FLAG_CONVERT_OUTPUT_TO_SRGB) != 0 ;
1135
1137
1136
1138
m_EnvMapRenderer->Render (EnvMapAttribs, TMAttribs);
@@ -1210,7 +1212,7 @@ void GLTFViewer::Render()
1210
1212
// Render motion vectors in the opposite direction
1211
1213
Attribs.Scale = float2{-0 .05f } / std::max (m_ElapsedTime, 0 .001f );
1212
1214
Attribs.StartColor = float4{1 };
1213
- Attribs.EndColor = float4{0.5 };
1215
+ Attribs.EndColor = float4{0.5 , 0.5 , 0.5 , 1.0 };
1214
1216
Attribs.ConvertOutputToSRGB = (SCDesc.ColorBufferFormat == TEX_FORMAT_RGBA8_UNORM || SCDesc.ColorBufferFormat == TEX_FORMAT_BGRA8_UNORM);
1215
1217
1216
1218
Attribs.pVectorField = m_GBuffer->GetBuffer (GBUFFER_RT_MOTION_VECTORS)->GetDefaultView (TEXTURE_VIEW_SHADER_RESOURCE);
0 commit comments