Platform GLSL: Fix dev_skipnormal for lightmapped_ shaders

This commit is contained in:
Marco Cawthorne 2020-09-29 19:26:00 +02:00
parent 1a0193ad3a
commit d22056014a
7 changed files with 147 additions and 10 deletions

View File

@ -65,7 +65,22 @@ varying vec2 lm1, lm2, lm3;
#include "sys/fog.h"
#include "sys/pcf.h"
vec3 lightmap_fragment (vec3 normal_f)
vec3 lightmap_fragment()
{
vec3 lightmaps;
#ifdef LIGHTSTYLED
lightmaps = texture2D(s_lightmap0, lm0).rgb * e_lmscale[0].rgb;
lightmaps += texture2D(s_lightmap1, lm1).rgb * e_lmscale[1].rgb;
lightmaps += texture2D(s_lightmap2, lm2).rgb * e_lmscale[2].rgb;
lightmaps += texture2D(s_lightmap3, lm3).rgb * e_lmscale[3].rgb;
#else
lightmaps = texture2D(s_lightmap, lm0).rgb * e_lmscale.rgb;
#endif
return lightmaps;
}
vec3 lightmap_fragment(vec3 normal_f)
{
vec3 lightmaps;
@ -82,18 +97,26 @@ varying vec2 lm1, lm2, lm3;
void main (void)
{
vec4 diffuse_f = texture2D(s_t0, tex_c);
vec3 normal_f = normalize(texture2D(s_t1, tex_c).rgb - 0.5);
vec4 diffuse_f;
vec3 normal_f;
normal_f = normalize(texture2D(s_t1, tex_c).rgb - 0.5);
if (float(dev_skipdiffuse) == 1.0) {
diffuse_f = vec4(1.0,1.0,1.0,1.0);
} else {
diffuse_f = texture2D(s_t0, tex_c);
}
#ifdef FAKESHADOWS
diffuse_f.rgb *= ShadowmapFilter(s_shadowmap, vtexprojcoord);
#endif
diffuse_f.rgb *= lightmap_fragment(normal_f);
if (float(dev_skipnormal) == 1.0) {
diffuse_f.rgb *= lightmap_fragment();
} else {
diffuse_f.rgb *= lightmap_fragment(normal_f);
}
gl_FragColor = fog4(diffuse_f);
}

View File

@ -57,6 +57,21 @@ varying vec2 lm1, lm2, lm3;
#include "sys/fog.h"
#include "sys/pcf.h"
vec3 lightmap_fragment()
{
vec3 lightmaps;
#ifdef LIGHTSTYLED
lightmaps = texture2D(s_lightmap0, lm0).rgb * e_lmscale[0].rgb;
lightmaps += texture2D(s_lightmap1, lm1).rgb * e_lmscale[1].rgb;
lightmaps += texture2D(s_lightmap2, lm2).rgb * e_lmscale[2].rgb;
lightmaps += texture2D(s_lightmap3, lm3).rgb * e_lmscale[3].rgb;
#else
lightmaps = texture2D(s_lightmap, lm0).rgb * e_lmscale.rgb;
#endif
return lightmaps;
}
vec3 lightmap_fragment (vec3 normal_f)
{
vec3 lightmaps;
@ -85,7 +100,11 @@ varying vec2 lm1, lm2, lm3;
diffuse_f.rgb *= ShadowmapFilter(s_shadowmap, vtexprojcoord);
#endif
diffuse_f.rgb *= lightmap_fragment(normal_f);
if (float(dev_skipnormal) == 1.0) {
diffuse_f.rgb *= lightmap_fragment();
} else {
diffuse_f.rgb *= lightmap_fragment(normal_f);
}
gl_FragColor = fog4(diffuse_f);
}

View File

@ -65,6 +65,21 @@ varying vec2 lm1, lm2, lm3;
#define s_reflect s_t0
vec3 lightmap_fragment()
{
vec3 lightmaps;
#ifdef LIGHTSTYLED
lightmaps = texture2D(s_lightmap0, lm0).rgb * e_lmscale[0].rgb;
lightmaps += texture2D(s_lightmap1, lm1).rgb * e_lmscale[1].rgb;
lightmaps += texture2D(s_lightmap2, lm2).rgb * e_lmscale[2].rgb;
lightmaps += texture2D(s_lightmap3, lm3).rgb * e_lmscale[3].rgb;
#else
lightmaps = texture2D(s_lightmap, lm0).rgb * e_lmscale.rgb;
#endif
return lightmaps;
}
vec3 lightmap_fragment (vec3 normal_f)
{
vec3 lightmaps;
@ -87,7 +102,11 @@ varying vec2 lm1, lm2, lm3;
vec3 normal_f = normalize(texture2D(s_normalmap, tex_c).rgb - 0.5);
/* modulate the final pixel with the lightmap value */
diffuse_f.rgb *= lightmap_fragment(normal_f);
if (float(dev_skipnormal) == 1.0) {
diffuse_f.rgb *= lightmap_fragment();
} else {
diffuse_f.rgb *= lightmap_fragment(normal_f);
}
/* map the reflection buffer onto the surface */
stc = (1.0 + (tf.xy / tf.w)) * 0.5;

View File

@ -69,6 +69,21 @@ varying vec2 lm1, lm2, lm3;
#include "sys/fog.h"
#include "sys/pcf.h"
vec3 lightmap_fragment()
{
vec3 lightmaps;
#ifdef LIGHTSTYLED
lightmaps = texture2D(s_lightmap0, lm0).rgb * e_lmscale[0].rgb;
lightmaps += texture2D(s_lightmap1, lm1).rgb * e_lmscale[1].rgb;
lightmaps += texture2D(s_lightmap2, lm2).rgb * e_lmscale[2].rgb;
lightmaps += texture2D(s_lightmap3, lm3).rgb * e_lmscale[3].rgb;
#else
lightmaps = texture2D(s_lightmap, lm0).rgb * e_lmscale.rgb;
#endif
return lightmaps;
}
vec3 lightmap_fragment (vec3 normal_f)
{
vec3 lightmaps;
@ -92,7 +107,11 @@ varying vec2 lm1, lm2, lm3;
vec3 normal_f = normalize(texture2D(s_normalmap, tex_c).rgb - 0.5);
vec3 env_f;
diffuse_f.rgb *= lightmap_fragment(normal_f);
if (float(dev_skipnormal) == 1.0) {
diffuse_f.rgb *= lightmap_fragment();
} else {
diffuse_f.rgb *= lightmap_fragment(normal_f);
}
#ifdef FAKESHADOWS
diffuse_f.rgb *= ShadowmapFilter(s_shadowmap, vtexprojcoord);

View File

@ -65,6 +65,21 @@ varying vec2 lm1, lm2, lm3;
#include "sys/fog.h"
#include "sys/pcf.h"
vec3 lightmap_fragment()
{
vec3 lightmaps;
#ifdef LIGHTSTYLED
lightmaps = texture2D(s_lightmap0, lm0).rgb * e_lmscale[0].rgb;
lightmaps += texture2D(s_lightmap1, lm1).rgb * e_lmscale[1].rgb;
lightmaps += texture2D(s_lightmap2, lm2).rgb * e_lmscale[2].rgb;
lightmaps += texture2D(s_lightmap3, lm3).rgb * e_lmscale[3].rgb;
#else
lightmaps = texture2D(s_lightmap, lm0).rgb * e_lmscale.rgb;
#endif
return lightmaps;
}
vec3 lightmap_fragment (vec3 normal_f)
{
vec3 lightmaps;
@ -95,7 +110,11 @@ varying vec2 lm1, lm2, lm3;
diffuse_f.rgb *= ShadowmapFilter(s_shadowmap, vtexprojcoord);
#endif
diffuse_f.rgb *= lightmap_fragment(normal_f);
if (float(dev_skipnormal) == 1.0) {
diffuse_f.rgb *= lightmap_fragment();
} else {
diffuse_f.rgb *= lightmap_fragment(normal_f);
}
vec3 halfdir = normalize(normalize(eyevector) - e_light_dir);
spec = pow(max(dot(halfdir, normal_f), 0.0), FTE_SPECULAR_EXPONENT);

View File

@ -65,6 +65,21 @@ varying vec2 lm1, lm2, lm3;
#include "sys/fog.h"
#include "sys/pcf.h"
vec3 lightmap_fragment()
{
vec3 lightmaps;
#ifdef LIGHTSTYLED
lightmaps = texture2D(s_lightmap0, lm0).rgb * e_lmscale[0].rgb;
lightmaps += texture2D(s_lightmap1, lm1).rgb * e_lmscale[1].rgb;
lightmaps += texture2D(s_lightmap2, lm2).rgb * e_lmscale[2].rgb;
lightmaps += texture2D(s_lightmap3, lm3).rgb * e_lmscale[3].rgb;
#else
lightmaps = texture2D(s_lightmap, lm0).rgb * e_lmscale.rgb;
#endif
return lightmaps;
}
vec3 lightmap_fragment (vec3 normal_f)
{
vec3 lightmaps;
@ -95,7 +110,11 @@ varying vec2 lm1, lm2, lm3;
#endif
/* lightmap */
diffuse_f.rgb *= lightmap_fragment(normal_f);
if (float(dev_skipnormal) == 1.0) {
diffuse_f.rgb *= lightmap_fragment();
} else {
diffuse_f.rgb *= lightmap_fragment(normal_f);
}
/* specular */
vec3 halfdir = normalize(normalize(eyevector) - e_light_dir);

View File

@ -69,6 +69,21 @@ varying vec4 vtexprojcoord;
#include "sys/fog.h"
#include "sys/pcf.h"
vec3 lightmap_fragment()
{
vec3 lightmaps;
#ifdef LIGHTSTYLED
lightmaps = texture2D(s_lightmap0, lm0).rgb * e_lmscale[0].rgb;
lightmaps += texture2D(s_lightmap1, lm1).rgb * e_lmscale[1].rgb;
lightmaps += texture2D(s_lightmap2, lm2).rgb * e_lmscale[2].rgb;
lightmaps += texture2D(s_lightmap3, lm3).rgb * e_lmscale[3].rgb;
#else
lightmaps = texture2D(s_lightmap, lm0).rgb * e_lmscale.rgb;
#endif
return lightmaps;
}
vec3 lightmap_fragment (vec3 normal_f)
{
vec3 lightmaps;
@ -97,7 +112,11 @@ varying vec4 vtexprojcoord;
spec = pow(max(dot(halfdir, normal_f), 0.0), FTE_SPECULAR_EXPONENT);
spec *= (gloss * 0.1);
diffuse_f.rgb *= lightmap_fragment(normal_f);
if (float(dev_skipnormal) == 1.0) {
diffuse_f.rgb *= lightmap_fragment();
} else {
diffuse_f.rgb *= lightmap_fragment(normal_f);
}
#ifdef FAKESHADOWS
diffuse_f.rgb *= ShadowmapFilter(s_shadowmap, vtexprojcoord);