File: TreeVertProg.glsl

package info (click to toggle)
spring 103.0%2Bdfsg2-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 43,720 kB
  • ctags: 63,685
  • sloc: cpp: 368,283; ansic: 33,988; python: 12,417; java: 12,203; awk: 5,879; sh: 1,846; xml: 655; perl: 405; php: 211; objc: 194; makefile: 77; sed: 2
file content (65 lines) | stat: -rw-r--r-- 1,869 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#if (defined(TREE_NEAR_BASIC) || defined(TREE_NEAR_SHADOW))
uniform vec3 cameraDirX;
uniform vec3 cameraDirY;
uniform vec3 treeOffset;

uniform vec3 groundAmbientColor;
uniform vec3 groundDiffuseColor;

uniform vec2 alphaModifiers;      // (tree-height alpha, ground-diffuse alpha)
#endif

#ifdef TREE_NEAR_BASIC
uniform vec4 invMapSizePO2;
#endif

#if (defined(TREE_NEAR_SHADOW) || defined(TREE_DIST_SHADOW))
uniform mat4 shadowMatrix;
uniform vec4 shadowParams;

varying float fogFactor;
#endif

#define MAX_TREE_HEIGHT 60.0

void main() {
	vec4 vertexPos = gl_Vertex;

	#if (defined(TREE_NEAR_BASIC) || defined(TREE_NEAR_SHADOW))
	vertexPos.xyz += treeOffset;
	vertexPos.xyz += (cameraDirX * gl_Normal.x);
	vertexPos.xyz += (cameraDirY * gl_Normal.y);

	gl_FrontColor.rgb = (gl_Normal.z * groundDiffuseColor.rgb) + groundAmbientColor.rgb;
	gl_FrontColor.a = (gl_Vertex.y * alphaModifiers.x) + alphaModifiers.y;
	#endif
	#if (defined(TREE_DIST_SHADOW))
	gl_FrontColor = gl_Color;
	#endif

	#if (defined(TREE_NEAR_SHADOW) || defined(TREE_DIST_SHADOW))
	vec2 p17 = shadowParams.zz;
	vec2 p18 = shadowParams.ww;

	vec4 vertexShadowPos = shadowMatrix * vertexPos;
		vertexShadowPos.st *= (inversesqrt(abs(vertexShadowPos.st) + p17) + p18);
		vertexShadowPos.st += shadowParams.xy;
	#endif

	#if (defined(TREE_NEAR_BASIC))
	gl_TexCoord[0] = gl_MultiTexCoord0;
	gl_TexCoord[1] = vertexPos.xzyw * invMapSizePO2;
	#endif
	#if (defined(TREE_NEAR_SHADOW) || defined(TREE_DIST_SHADOW))
	gl_TexCoord[0] = vertexShadowPos;
	gl_TexCoord[1] = gl_MultiTexCoord0;
	#endif

	gl_FogFragCoord = length((gl_ModelViewMatrix * vertexPos).xyz);
	gl_Position = gl_ModelViewProjectionMatrix * vertexPos;

	#if (defined(TREE_NEAR_SHADOW) || defined(TREE_DIST_SHADOW))
	fogFactor = (gl_Fog.end - gl_FogFragCoord) / (gl_Fog.end - gl_Fog.start);
	fogFactor = clamp(fogFactor, 0.0, 1.0);
	#endif
}