From ffa9cae11cbe5b4565bc756da4804b9fbd999d8f Mon Sep 17 00:00:00 2001 From: timoore Date: Mon, 23 Nov 2009 21:53:56 +0000 Subject: [PATCH] New tree rendering algorithm Draw trees in two passes, opaque and transparent. This allows us to have some transparency, which is better looking, and dispense with sorting. Author: Tim Moore --- Effects/tree.eff | 61 ++++++++++++++++++++++++++++++++++++++++------- Shaders/tree.vert | 1 - 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/Effects/tree.eff b/Effects/tree.eff index 6713511e7..ae0e7839f 100644 --- a/Effects/tree.eff +++ b/Effects/tree.eff @@ -1,6 +1,16 @@ + Effects/tree @@ -17,20 +27,16 @@ - + true 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 off - - 2 - DepthSortedBin - gequal - 0.33 + 1.0 0 @@ -48,9 +54,46 @@ sampler-2d 0 - - true + + + true + + 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 + off + + + 2 + RenderBin + + + less + + 1.0 + + + src-alpha + one-minus-src-alpha + + + false + + + 0 + 2d + texture[0]/image + clamp + clamp + + + Shaders/tree.vert + Shaders/tree.frag + + + baseTexture + sampler-2d + 0 + diff --git a/Shaders/tree.vert b/Shaders/tree.vert index 4c5017243..8b098175e 100644 --- a/Shaders/tree.vert +++ b/Shaders/tree.vert @@ -29,7 +29,6 @@ void main(void) vec3 diffuse = gl_FrontMaterial.diffuse.rgb * max(0.1, n); vec4 ambientColor = gl_FrontLightModelProduct.sceneColor + gl_LightSource[0].ambient * gl_FrontMaterial.ambient; gl_FrontColor = ambientColor + gl_LightSource[0].diffuse * vec4(diffuse, 1.0); - gl_BackColor = gl_FrontColor; float fogCoord = abs(ecPosition.z); fogFactor = exp( -gl_Fog.density * gl_Fog.density * fogCoord * fogCoord);