]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - shader_glsl.h
Offsetmapping: new "Bias" parameter that sets a custom "null point" instead of always...
[xonotic/darkplaces.git] / shader_glsl.h
index 70afe06578c0bfcce339dbcb82a1175beb934474..e0060e7db36824dfe6554a5090a1da09aeddaded 100644 (file)
 "\n"
 "#ifdef USEOFFSETMAPPING\n"
 "uniform mediump vec4 OffsetMapping_ScaleSteps;\n"
+"uniform mediump float OffsetMapping_Bias;\n"
 "#ifdef USEOFFSETMAPPING_LOD\n"
 "uniform mediump float OffsetMapping_LodDistance;\n"
 "#endif\n"
 "      //vec3 OffsetVector = vec3(EyeVectorFogDepth.xy * ((1.0 / EyeVectorFogDepth.z) * ScaleSteps.x) * vec2(-1, 1), -1);\n"
 "      //vec3 OffsetVector = vec3(normalize(EyeVectorFogDepth.xy) * ScaleSteps.x * vec2(-1, 1), -1);\n"
 "      vec3 OffsetVector = vec3(normalize(EyeVectorFogDepth.xyz).xy * ScaleSteps.x * vec2(-1, 1), -1);\n"
-"      vec3 RT = vec3(TexCoord, 1);\n"
+"      vec3 RT = vec3(vec2(TexCoord.xy - OffsetVector.xy*OffsetMapping_Bias), 1);\n"
 "      OffsetVector *= ScaleSteps.z;\n"
 "      for(i = 1.0; i < ScaleSteps.y; ++i)\n"
 "              RT += OffsetVector *  step(dp_textureGrad(Texture_Normal, RT.xy, dPdx, dPdy).a, RT.z);\n"
 "      //vec2 OffsetVector = vec2(EyeVectorFogDepth.xy * ((1.0 / EyeVectorFogDepth.z) * ScaleSteps.x) * vec2(-1, 1));\n"
 "      //vec2 OffsetVector = vec2(normalize(EyeVectorFogDepth.xy) * ScaleSteps.x * vec2(-1, 1));\n"
 "      vec2 OffsetVector = vec2(normalize(EyeVectorFogDepth.xyz).xy * ScaleSteps.x * vec2(-1, 1));\n"
+"      TexCoord.xy = TexCoord.xy - OffsetVector.xy*OffsetMapping_Bias;\n"
 "      OffsetVector *= ScaleSteps.z;\n"
 "      for(i = 0.0; i < ScaleSteps.y; ++i)\n"
 "              TexCoord += OffsetVector * (1.0 - dp_textureGrad(Texture_Normal, TexCoord, dPdx, dPdy).a);\n"