]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - shader_hlsl.h
fix an unlikely crypto downgrade attack found during audit
[xonotic/darkplaces.git] / shader_hlsl.h
index b8d851fea84e9a1805d335388e08373260aa6659..20770d187a3f108f57737ec630042762ffb09831 100644 (file)
 "#ifdef USEGAMMARAMPS\n"
 "uniform sampler Texture_GammaRamps : register(s2),\n"
 "#endif\n"
+"uniform half Alpha : register(c0),\n"
 "out float4 dp_FragColor : COLOR\n"
 ")\n"
 "{\n"
 "      dp_FragColor.g = tex2D(Texture_GammaRamps, vec2(dp_FragColor.g, 0)).g;\n"
 "      dp_FragColor.b = tex2D(Texture_GammaRamps, vec2(dp_FragColor.b, 0)).b;\n"
 "#endif\n"
+"#ifdef USEALPHAKILL\n"
+"      dp_FragColor.a *= Alpha;\n"
+"#endif\n"
 "}\n"
 "#endif\n"
 "#else // !MODE_GENERIC\n"
 "      //float LODFactor = min(1.0, OffsetMapping_LodDistance / EyeVectorFogDepth.z);\n"
 "      //float4 ScaleSteps = float4(OffsetMapping_ScaleSteps.x, OffsetMapping_ScaleSteps.y * LODFactor, OffsetMapping_ScaleSteps.z / LODFactor, OffsetMapping_ScaleSteps.w * LODFactor);\n"
 "      float GuessLODFactor = min(1.0, OffsetMapping_LodDistance / EyeVectorFogDepth.z);\n"
+"#ifdef USEOFFSETMAPPING_RELIEFMAPPING\n"
+"      // stupid workaround because 1-step and 2-step reliefmapping is void\n"
+"      float LODSteps = max(3.0, ceil(GuessLODFactor * OffsetMapping_ScaleSteps.y));\n"
+"#else\n"
 "      float LODSteps = ceil(GuessLODFactor * OffsetMapping_ScaleSteps.y);\n"
+"#endif\n"
 "      float LODFactor = LODSteps / OffsetMapping_ScaleSteps.y;\n"
 "      float4 ScaleSteps = float4(OffsetMapping_ScaleSteps.x, LODSteps, 1.0 / LODSteps, OffsetMapping_ScaleSteps.w * LODFactor);\n"
 "#else\n"