File: TreeVertProg.glsl

package info (click to toggle)
spring 106.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 55,260 kB
  • sloc: cpp: 543,946; ansic: 44,800; python: 12,575; java: 12,201; awk: 5,889; sh: 1,796; asm: 1,546; xml: 655; perl: 405; php: 211; objc: 194; makefile: 76; sed: 2
file content (57 lines) | stat: -rw-r--r-- 1,511 bytes parent folder | download | duplicates (3)
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
#version 410 core

uniform mat4 projMat;
uniform mat4 viewMat;
uniform mat4 treeMat;             // world-transform

uniform vec3 cameraDirX;          // needed for bush-type trees
uniform vec3 cameraDirY;

uniform vec3 groundAmbientColor;
uniform vec3 groundDiffuseColor;

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

uniform vec3 fogParams;           // .x := start, .y := end, .z := viewrange


layout(location = 0) in vec3 vtxPositionAttr;
layout(location = 1) in vec2 vtxTexCoordAttr;
layout(location = 2) in vec3 vtxNormalAttr;

out vec4 vVertexPos;
out vec2 vTexCoord;
out vec4 vBaseColor;

out float vFogFactor;


void main() {
	vec4 vertexPos = vec4(vtxPositionAttr, 1.0);

	vertexPos.xyz += (cameraDirX * vtxNormalAttr.x);
	vertexPos.xyz += (cameraDirY * vtxNormalAttr.y);

	#if (TREE_SHADOW == 1)
	vVertexPos = treeMat * vertexPos;
	#endif

	vBaseColor.rgb = (vtxNormalAttr.z * groundDiffuseColor.rgb) + groundAmbientColor.rgb;
	vBaseColor.a = (vtxPositionAttr.y * alphaModifiers.x) + alphaModifiers.y;

	vTexCoord = vtxTexCoordAttr;


	gl_Position = projMat * viewMat * treeMat * vertexPos;

	{
		float eyeDepth = length((viewMat * treeMat * vertexPos).xyz);
		float fogRange = (fogParams.y - fogParams.x) * fogParams.z;
		float fogDepth = (eyeDepth - fogParams.x * fogParams.z) / fogRange;
		// float fogDepth = (fogParams.y * fogParams.z - eyeDepth) / fogRange;

		vFogFactor = 1.0 - clamp(fogDepth, 0.0, 1.0);
		// vFogFactor = clamp(fogDepth, 0.0, 1.0);
	}
}