1
0
Fork 0

Use square tree textures with reduce UV coordinates.

This commit is contained in:
Stuart Buchanan 2013-05-19 21:30:20 +01:00
parent 847e49b3a5
commit 3929e8d091
13 changed files with 15 additions and 12 deletions

View file

@ -11,9 +11,10 @@ void main() {
// Texture coordinates
float numVarieties = gl_Normal.z;
float texFract = floor(fract(gl_MultiTexCoord0.x) * numVarieties) / (numVarieties * 4.0);
texFract += floor(gl_MultiTexCoord0.x) / (numVarieties * 4.0);
gl_TexCoord[0] = vec4(texFract + 0.5 * float(season), gl_MultiTexCoord0.y, 0.0, 0.0);
float texFract = floor(fract(gl_MultiTexCoord0.x) * numVarieties) / numVarieties;
texFract += floor(gl_MultiTexCoord0.x) / numVarieties;
gl_TexCoord[0] = vec4(texFract, gl_MultiTexCoord0.y, 0.0, 0.0);
gl_TexCoord[0].y = gl_TexCoord[0].y + 0.5 * season;
// Position and scaling
vec3 position = gl_Vertex.xyz * gl_Normal.xxy;

View file

@ -38,7 +38,7 @@ uniform float overcast;
//uniform float scattering;
uniform float ground_scattering;
uniform float snow_level;
uniform int season;
uniform int season;
float earthShade;
float mie_angle;
@ -75,18 +75,19 @@ void main()
// this code is copied from tree.vert
float numVarieties = gl_Normal.z;
float texFract = floor(fract(gl_MultiTexCoord0.x) * numVarieties) / (numVarieties * 4.0);
texFract += floor(gl_MultiTexCoord0.x) / (numVarieties * 4.0);
float texFract = floor(fract(gl_MultiTexCoord0.x) * numVarieties) / numVarieties;
texFract += floor(gl_MultiTexCoord0.x) / numVarieties;
// Determine the rotation for the tree. The Fog Coordinate provides rotation information
// to rotate one of the quands by 90 degrees. We then apply an additional position seed
// so that trees aren't all oriented N/S
float sr = sin(gl_FogCoord + gl_Color.x);
float cr = cos(gl_FogCoord + gl_Color.x);
gl_TexCoord[0] = vec4(texFract, gl_MultiTexCoord0.y, 0.0, 0.0);
// Shift texture to account for snow level and seasons
gl_TexCoord[0] = vec4(texFract + 0.25 * step(snow_level, gl_Color.z) + 0.5 * float(season), gl_MultiTexCoord0.y, 0.0, 0.0);
// Determine the y texture coordinate based on whether it's summer, winter, snowy.
gl_TexCoord[0].y = gl_TexCoord[0].y + 0.25 * step(snow_level, gl_Color.z) + 0.5 * season;
// scaling
vec3 position = gl_Vertex.xyz * gl_Normal.xxy;

View file

@ -17,15 +17,16 @@ uniform int season;
void main(void)
{
float numVarieties = gl_Normal.z;
float texFract = floor(fract(gl_MultiTexCoord0.x) * numVarieties) / (numVarieties * 4.0);
texFract += floor(gl_MultiTexCoord0.x) / (numVarieties * 4.0);
float texFract = floor(fract(gl_MultiTexCoord0.x) * numVarieties) / numVarieties;
texFract += floor(gl_MultiTexCoord0.x) / numVarieties;
// Determine the rotation for the tree. The Fog Coordinate provides rotation information
// to rotate one of the quands by 90 degrees. We then apply an additional position seed
// so that trees aren't all oriented N/S
float sr = sin(gl_FogCoord + gl_Color.x);
float cr = cos(gl_FogCoord + gl_Color.x);
gl_TexCoord[0] = vec4(texFract + 0.5 * float(season), gl_MultiTexCoord0.y, 0.0, 0.0);
gl_TexCoord[0] = vec4(texFract, gl_MultiTexCoord0.y, 0.0, 0.0);
gl_TexCoord[0].y = gl_TexCoord[0].y + 0.5 * season;
// scaling
vec3 position = gl_Vertex.xyz * gl_Normal.xxy;

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 101 KiB