From 71dc2bc90bc2e4267606d158ab907a581050e9ab Mon Sep 17 00:00:00 2001 From: numas13 Date: Mon, 17 Aug 2020 23:14:20 +0300 Subject: [PATCH] Fix white soft shadows glitch Assigning an integer to a float variable in HLSL causes undefined behaviour in RadeonSI/MESA. --- base/renderprogs/interactionSM.ps.hlsl | 2 +- neo/renderer/RenderProgs_embedded.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/base/renderprogs/interactionSM.ps.hlsl b/base/renderprogs/interactionSM.ps.hlsl index 967caa1c..8bb2dca6 100644 --- a/base/renderprogs/interactionSM.ps.hlsl +++ b/base/renderprogs/interactionSM.ps.hlsl @@ -368,7 +368,7 @@ void main( PS_IN fragment, out PS_OUT result ) //float vogelPhi = InterleavedGradientNoiseAnim( fragment.position.xy, rpJitterTexOffset.w ); float shadowTexelSize = rpScreenCorrectionFactor.z * rpJitterTexScale.x; - for( float i = 0; i < numSamples; i += 1.0 ) + for( float i = 0.0; i < numSamples; i += 1.0 ) { float2 jitter = VogelDiskSample( i, numSamples, vogelPhi ); diff --git a/neo/renderer/RenderProgs_embedded.h b/neo/renderer/RenderProgs_embedded.h index 9c901cb5..7be966d0 100644 --- a/neo/renderer/RenderProgs_embedded.h +++ b/neo/renderer/RenderProgs_embedded.h @@ -10316,7 +10316,7 @@ static const cgShaderDef_t cg_renderprogs[] = " //float vogelPhi = InterleavedGradientNoiseAnim( fragment.position.xy, rpJitterTexOffset.w );\n" "\n" " float shadowTexelSize = rpScreenCorrectionFactor.z * rpJitterTexScale.x;\n" - " for( float i = 0; i < numSamples; i += 1.0 )\n" + " for( float i = 0.0; i < numSamples; i += 1.0 )\n" " {\n" " float2 jitter = VogelDiskSample( i, numSamples, vogelPhi );\n" "\n"