|
|
@@ -68,11 +68,11 @@ float PCF(sampler2DShadow _sampler, vec4 _shadowCoord, float _bias, vec2 _texelS
|
|
|
|
|
|
float toClipSpaceDepth(float _depthTextureZ)
|
|
|
{
|
|
|
-#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL
|
|
|
+#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL
|
|
|
return _depthTextureZ;
|
|
|
#else
|
|
|
return _depthTextureZ * 2.0 - 1.0;
|
|
|
-#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL
|
|
|
+#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL
|
|
|
}
|
|
|
|
|
|
vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos)
|
|
|
@@ -81,7 +81,6 @@ vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos)
|
|
|
return wpos.xyz / wpos.w;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
void main()
|
|
|
{
|
|
|
vec3 n = texture2D(s_normal, v_texcoord0).xyz;
|
|
|
@@ -98,9 +97,9 @@ void main()
|
|
|
float deviceDepth = texture2D(s_depth, texCoord).x;
|
|
|
float depth = toClipSpaceDepth(deviceDepth);
|
|
|
vec3 clip = vec3(texCoord * 2.0 - 1.0, depth);
|
|
|
-#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL
|
|
|
+#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL
|
|
|
clip.y = -clip.y;
|
|
|
-#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL
|
|
|
+#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_METAL
|
|
|
vec3 wpos = clipToWorld(u_invMvp, clip);
|
|
|
|
|
|
const float shadowMapOffset = 0.003;
|