|
|
@@ -60,6 +60,15 @@ vec2 parallax_uv(vec2 uv, vec3 view_dir)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+vec2 texture2DBc4(sampler2D _sampler, vec2 _uv)
|
|
|
+{
|
|
|
+#if BGFX_SHADER_LANGUAGE_HLSL && BGFX_SHADER_LANGUAGE_HLSL <= 3
|
|
|
+ return texture2D(_sampler, _uv).yx;
|
|
|
+#else
|
|
|
+ return texture2D(_sampler, _uv).xy;
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
void main()
|
|
|
{
|
|
|
vec3 light_dir = normalize(v_ts_light_pos - v_ts_frag_pos);
|
|
|
@@ -88,8 +97,8 @@ void main()
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- normal.xy = texture2D(s_texNormal, uv).xy * 2.0 - 1.0;
|
|
|
- normal.z = sqrt(1.0 - dot(normal.xy, normal.xy) );
|
|
|
+ normal.xy = texture2DBc4(s_texNormal, uv) * 2.0 - 1.0;
|
|
|
+ normal.z = sqrt(1.0 - dot(normal.xy, normal.xy) );
|
|
|
}
|
|
|
|
|
|
float diffuse = max(dot(light_dir, normal), 0.0);
|