16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-22 09:19:18 +02:00

shader reflection color calculation tweak

This commit is contained in:
tmj-fstate
2020-08-12 20:57:57 +02:00
committed by GitHub
parent 82ebe1ab4a
commit 54b648fb5b
4 changed files with 386 additions and 236 deletions

View File

@@ -5,6 +5,10 @@ uniform sampler2DArrayShadow shadowmap;
uniform sampler2D headlightmap;
#include <envmapping.glsl>
#include <conversion.glsl>
float glossiness = 1.0;
bool metalic = false;
float length2(vec3 v)
{
@@ -42,9 +46,6 @@ float calc_shadow()
#endif
}
float glossiness = 1.0;
// [0] - diffuse, [1] - specular
// do magic here
vec2 calc_light(vec3 light_dir, vec3 fragnormal)
{
vec3 view_dir = normalize(vec3(0.0f, 0.0f, 0.0f) - f_pos.xyz);
@@ -107,19 +108,31 @@ vec2 calc_headlights(light_s light, vec3 fragnormal)
return part * atten * lightintensity;
}
bool metalic = false;
// [0] - diffuse, [1] - specular
// do magic here
vec3 apply_lights(vec3 fragcolor, vec3 fragnormal, vec3 texturecolor, float reflectivity, float specularity, float shadowtone)
{
fragcolor *= param[1].x;
vec3 emissioncolor = param[0].rgb * emission;
vec3 basecolor = param[0].rgb;
fragcolor *= basecolor;
vec3 emissioncolor = basecolor * emission;
vec3 envcolor = envmap_color(fragnormal);
// yuv path
vec3 texturecoloryuv = rgb2yuv(texturecolor);
vec3 texturecolorfullv = yuv2rgb(vec3(0.2176, texturecoloryuv.gb));
// hsl path
// vec3 texturecolorhsl = rgb2hsl(texturecolor);
// vec3 texturecolorfullv = hsl2rgb(vec3(texturecolorhsl.rg, 0.5));
vec3 envyuv = rgb2yuv(envcolor);
texturecolor = mix(texturecolor, texturecolorfullv, envyuv.r * reflectivity);
if(lights_count == 0U)
return (fragcolor + emissioncolor + envcolor * reflectivity) * texturecolor;
// fragcolor *= lights[0].intensity;
// fragcolor *= lights[0].intensity;
vec2 sunlight = calc_dir_light(lights[0], fragnormal);
float diffuseamount = (sunlight.x * param[1].x) * lights[0].intensity;
@@ -153,6 +166,7 @@ vec3 apply_lights(vec3 fragcolor, vec3 fragnormal, vec3 texturecolor, float refl
}
fragcolor += emissioncolor;
vec3 specularcolor = specularamount * lights[0].color;
if ((param[1].w < 0.0) || (metalic == true))
{
fragcolor += specularcolor;