1- Buffer <uint4 > pbrInfoArray : register(t3, space0);
1+ $input v_color0, v_fog, v_normal, v_tangent, v_bitangent, v_texcoord0, v_lightmapUV, v_worldPos, v_pbrTextureId
2+
3+ # include <bgfx_shader .sh>
24
5+ Buffer <uint4 > pbrInfoArray : register(t3, space0);
36SAMPLER2D (s_MatTexture, 0 );
47SAMPLER2D (s_LightMapTexture, 1 );
58SAMPLER2D (s_SeasonsTexture, 2 );
@@ -14,6 +17,15 @@ void main() {
1417 }
1518# endif
1619
20+ # ifdef SEASONS
21+ albedo.rgb *=
22+ mix(vec3(1.0 , 1.0 , 1.0 ),
23+ texture2D(s_SeasonsTexture, v_color0.xy).rgb * 2.0 , v_color0.b);
24+ albedo.rgb *= v_color0.aaa;
25+ # else
26+ albedo *= v_color0;
27+ # endif
28+
1729 vec4 vanillaLight = Texture2D (s_LightMapTexture,
1830 min(BlockSkyAmbientContribution .xy * v_lightmapUV.xy, vec2(1.0 , 1.0 )));
1931 float emissive;
@@ -22,19 +34,19 @@ void main() {
2234 if ((pbrInfoArray.Load ((pbrTextureId * 16u) + 8u).x & 1u) ==
2335 0u) // don't have mer tex
2436 {
25- metallic = float(pbrInfoArray.Load ((pbrTextureId * 16u) + 11u).x);
26- emissive = float(pbrInfoArray.Load ((pbrTextureId * 16u) + 10u).x);
27- roughness = float(pbrInfoArray.Load ((pbrTextureId * 16u) + 9u).x);
37+ metallic = float(pbrInfoArray.Load ((pbrTextureId * 16u) + 11u).x);
38+ emissive = float(pbrInfoArray.Load ((pbrTextureId * 16u) + 10u).x);
39+ roughness = float(pbrInfoArray.Load ((pbrTextureId * 16u) + 9u).x);
2840 } else {
2941 vec4 merTex = texture2D(s_MatTexture,
3042 float2(mad(v_texcoord0.x,
31- float(pbrInfoArray.Load (pbrTextureId * 16u).x),
32- float(pbrInfoArray.Load ((pbrTextureId * 16u) + 2u).x)),
43+ float(pbrInfoArray.Load ( pbrTextureId * 16u ).x),
44+ float(pbrInfoArray.Load ((pbrTextureId * 16u) + 2u).x)),
3345 mad(v_texcoord0.y,
34- float(pbrInfoArray.Load ((pbrTextureId * 16u) + 1u).x),
35- float(pbrInfoArray.Load ((pbrTextureId * 16u) + 3u).x))));
36- metallic = merTex.x;
37- emissive = merTex.y;
46+ float(pbrInfoArray.Load ((pbrTextureId * 16u) + 1u).x),
47+ float(pbrInfoArray.Load ((pbrTextureId * 16u) + 3u).x))));
48+ metallic = merTex.x;
49+ emissive = merTex.y;
3850 roughness = merTex.z;
3951 }
4052 vec3 normal = normalize(v_normal.xyz);
@@ -46,7 +58,7 @@ void main() {
4658 float camDis = length(modelCamPos);
4759 vec3 viewDir = normalize(- modelCamPos);
4860
49- gl_FragData[0 ].xyz = sqrt(albedo.xyz * v_color0.xyz ); // Fuck YOU NVIDIA gamma 2.0
61+ gl_FragData[0 ].xyz = sqrt(albedo.xyz); // Fuck YOU NVIDIA gamma 2.0
5062 gl_FragData[0 ].w = metallic;
5163
5264 gl_FragData[1 ].x =
@@ -76,6 +88,9 @@ void main() {
7688 gl_FragData[5 ].w = camDis;
7789
7890 gl_FragData[6 ].xyz = viewDir;
79- gl_FragData[6 ].w = float(((albedo.a * v_color0.a) < 0.8 ) ||
91+ gl_FragData[6 ].w = float(
92+ # ifndef SEASONS
93+ (albedo.a < 0.8 ) ||
94+ # endif
8095 ((metallic == 1.0f ) && (roughness < 0.01 ))); // is specular
8196}
0 commit comments