Am Lightning System gearbeitet

This commit is contained in:
2026-07-17 11:23:44 +02:00
parent cdaaba3841
commit 5ed7b4017c
23 changed files with 928 additions and 164 deletions

View File

@@ -16,14 +16,9 @@ uniform sampler2D m_AlphaMap_2;
uniform sampler2DArray m_NormalArray;
#endif
#ifdef HAS_LIGHTDIR
uniform vec3 m_LightDir;
#endif
#ifdef HAS_SCENE_LIGHT
uniform vec3 m_SunColor;
uniform vec3 m_AmbientColor;
#endif
in vec2 vSplatUV;
in vec3 vWorldPos;
@@ -111,18 +106,9 @@ void main() {
N = normalize(pertN);
#endif
#ifdef HAS_LIGHTDIR
vec3 lightDir = normalize(m_LightDir);
#else
vec3 lightDir = normalize(vec3(0.6, 1.0, 0.4));
#endif
float diff = max(dot(N, lightDir), 0.0);
#ifdef HAS_SCENE_LIGHT
vec3 light = m_AmbientColor + m_SunColor * diff;
#else
vec3 light = vec3(diff * 0.65 + 0.35);
#endif
const float BRIGHTNESS = 0.80;
#ifdef DEBUG_NO_LIGHT

View File

@@ -3,12 +3,9 @@
uniform vec4 m_Diffuse;
uniform sampler2D m_BarkMap;
uniform bool m_HasBarkMap;
#ifdef HAS_SCENE_LIGHT
uniform vec3 m_LightDir;
uniform vec3 m_SunColor;
uniform vec3 m_AmbientColor;
#endif
uniform vec3 m_LightDir;
uniform vec3 m_SunColor;
uniform vec3 m_AmbientColor;
in vec2 texCoord;
in vec3 worldNormal;
@@ -20,19 +17,8 @@ void main() {
? texture2D(m_BarkMap, texCoord).rgb * m_Diffuse.rgb
: m_Diffuse.rgb;
#ifdef HAS_SCENE_LIGHT
float diff = max(dot(n, normalize(m_LightDir)), 0.0);
vec3 light = clamp(m_AmbientColor + m_SunColor * diff, 0.0, 1.0);
#else
vec3 sunDir = normalize(vec3(0.6, 0.7, 0.4));
vec3 fillDir = normalize(vec3(-0.5, 0.3, -0.4));
vec3 rimDir = normalize(vec3(-0.3, 0.5, 0.7));
float sun = max(dot(n, sunDir), 0.0);
float fill = max(dot(n, fillDir), 0.0) * 0.22;
float rim = max(dot(n, rimDir), 0.0) * 0.14;
float sky = dot(n, vec3(0.0, 1.0, 0.0)) * 0.4 + 0.4;
vec3 light = vec3(clamp(sun * 0.75 + fill + rim + sky * 0.09 + 0.05, 0.0, 1.0));
#endif
gl_FragColor = vec4(baseColor * light, m_Diffuse.a);
}

View File

@@ -3,12 +3,9 @@
uniform vec4 m_Diffuse;
uniform sampler2D m_LeafMap;
uniform bool m_HasLeafMap;
#ifdef HAS_SCENE_LIGHT
uniform vec3 m_LightDir;
uniform vec3 m_SunColor;
uniform vec3 m_AmbientColor;
#endif
uniform vec3 m_LightDir;
uniform vec3 m_SunColor;
uniform vec3 m_AmbientColor;
in vec2 texCoord;
in vec3 worldNormal;
@@ -27,12 +24,8 @@ void main() {
baseColor = m_Diffuse.rgb * (0.7 + 0.3 * edge);
}
#ifdef HAS_SCENE_LIGHT
// Blätter transmittieren Licht — abs() für doppelseitige Beleuchtung
float diff = abs(dot(normalize(worldNormal), normalize(m_LightDir)));
vec3 light = clamp(m_AmbientColor + m_SunColor * diff * 0.6, 0.0, 1.0);
gl_FragColor = vec4(baseColor * light, 1.0);
#else
gl_FragColor = vec4(baseColor * 0.8, 1.0);
#endif
}