Am Lightning System gearbeitet
This commit is contained in:
@@ -5,9 +5,9 @@ MaterialDef TerrainArray {
|
||||
FloatArray DiffuseScales
|
||||
TextureArray NormalArray
|
||||
Float Shininess : 32.0
|
||||
Vector3 LightDir
|
||||
Vector3 SunColor
|
||||
Vector3 AmbientColor
|
||||
Vector3 LightDir : 0.6 -0.8 0.4
|
||||
Vector3 SunColor : 0.68 0.65 0.60
|
||||
Vector3 AmbientColor : 0.08 0.10 0.16
|
||||
Boolean DebugNoLight
|
||||
Boolean DebugSlot0Only
|
||||
Texture2D DebugDirectTex
|
||||
@@ -30,8 +30,6 @@ MaterialDef TerrainArray {
|
||||
HAS_NORMAL_ARRAY : NormalArray
|
||||
HAS_ALPHA_1 : AlphaMap_1
|
||||
HAS_ALPHA_2 : AlphaMap_2
|
||||
HAS_LIGHTDIR : LightDir
|
||||
HAS_SCENE_LIGHT : SunColor
|
||||
DEBUG_NO_LIGHT : DebugNoLight
|
||||
DEBUG_SLOT0_ONLY : DebugSlot0Only
|
||||
DEBUG_DIRECT_TEX : DebugDirectTex
|
||||
|
||||
@@ -7,9 +7,9 @@ MaterialDef Tree {
|
||||
Vector2 WindDir : 0.0 1.0
|
||||
Texture2D BarkMap
|
||||
Boolean HasBarkMap : false
|
||||
Vector3 LightDir
|
||||
Vector3 SunColor
|
||||
Vector3 AmbientColor
|
||||
Vector3 LightDir : 0.6 -0.8 0.4
|
||||
Vector3 SunColor : 0.68 0.65 0.60
|
||||
Vector3 AmbientColor : 0.08 0.10 0.16
|
||||
}
|
||||
|
||||
Technique {
|
||||
@@ -23,7 +23,6 @@ MaterialDef Tree {
|
||||
}
|
||||
|
||||
Defines {
|
||||
HAS_SCENE_LIGHT : SunColor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,9 +28,9 @@ MaterialDef TreeLeaf {
|
||||
Matrix4 LightViewProjectionMatrix4
|
||||
Matrix4 LightViewProjectionMatrix5
|
||||
Vector3 LightPos
|
||||
Vector3 LightDir
|
||||
Vector3 SunColor
|
||||
Vector3 AmbientColor
|
||||
Vector3 LightDir : 0.6 -0.8 0.4
|
||||
Vector3 SunColor : 0.68 0.65 0.60
|
||||
Vector3 AmbientColor : 0.08 0.10 0.16
|
||||
Float PCFEdge
|
||||
Float ShadowMapSize
|
||||
Boolean BackfaceShadows : false
|
||||
@@ -51,7 +51,6 @@ MaterialDef TreeLeaf {
|
||||
}
|
||||
|
||||
Defines {
|
||||
HAS_SCENE_LIGHT : SunColor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user