Hi Stuart,

inline patches with long lines are real nightmares. Could you resend it
as attached file ?

Thanks,
-Fred

Stuart Buchanan a écrit :
> Hi All,
>
> I've been playing around with the random tree generator in an attempt to get 
> more realistic looking trees, in particular when lit by the sun.
>
> The patch below changes the shader so the diffuse light element is applied 
> based on the co-linearity of the light vector and the viewing vector. I think 
> this makes sense, as the tree textures don't represent a surface themselves.
>
> To compare, here's a link a screenshot of the old trees:
>
> http:/www.nanjika.co.uk/flightgear/old_trees.jpg
>
> New trees, also showcasing some improved cloud textures from Argyle on the 
> forum: 
>
> http:/www.nanjika.co.uk/flightgear/new_trees.jpg
>
> In both cases, the sun is behind the viewer, so the viewer should be seeing 
> the sunlit side of the tree. I think the tree textures themselves are 
> possibly a bit too saturated, but this can be easily rectified if the code is 
> committed.
>
> The patch is below.
>
> -Stuart
>
> Index: TreeBin.cxx
> ===================================================================
> RCS file: /var/cvs/SimGear-0.3/source/simgear/scene/tgdb/TreeBin.cxx,v
> retrieving revision 1.7
> diff -u -p -r1.7 TreeBin.cxx
> --- TreeBin.cxx    30 Jan 2009 10:22:19 -0000    1.7
> +++ TreeBin.cxx    18 Apr 2009 15:20:29 -0000
> @@ -149,14 +149,12 @@ osg::Geometry* createOrthQuads(float w, 
>      "  vec3 position = gl_Vertex.xyz * gl_Color.w + gl_Color.xyz;\n"
>      "  gl_Position   = gl_ModelViewProjectionMatrix * vec4(position,1.0);\n"
>      "  vec3 ecPosition = vec3(gl_ModelViewMatrix * vec4(position, 1.0));\n"
> -    "  vec3 N = normalize(gl_NormalMatrix * gl_Normal);\n"
> -    "  vec3 diffuse = gl_FrontMaterial.diffuse.rgb * max(0.0, dot(N, 
> gl_LightSource[0].position.xyz));\n"
> -    "  vec3 backDiffuse = gl_FrontMaterial.diffuse.rgb * max(0.0, dot(-N, 
> gl_LightSource[0].position.xyz));\n"
> -    " vec4 ambientColor = gl_FrontLightModelProduct.sceneColor + 
> gl_LightSource[0].ambient * gl_FrontMaterial.ambient;\n"
> -    " gl_FrontColor = ambientColor + gl_LightSource[0].diffuse * 
> vec4(diffuse, 1.0);\n"
> -    " gl_BackColor = ambientColor + gl_LightSource[0].diffuse * 
> vec4(backDiffuse, 1.0)\n;"
> -//    "  gl_TexCoord[0] = gl_MultiTexCoord0;\n"
> -    " float fogCoord = abs(ecPosition.z);\n"
> +    "  float n = dot(normalize(gl_LightSource[0].position.xyz), 
> normalize(-ecPosition));\n"
> +    "  vec3 diffuse = gl_FrontMaterial.diffuse.rgb * max(0.1, n);\n"
> +    "  vec4 ambientColor = gl_FrontLightModelProduct.sceneColor + 
> gl_LightSource[0].ambient * gl_FrontMaterial.ambient;\n"
> +    "  gl_FrontColor = ambientColor + gl_LightSource[0].diffuse * 
> vec4(diffuse, 1.0);\n"
> +    "  gl_BackColor = gl_FrontColor;\n"
> +    "  float fogCoord = abs(ecPosition.z);\n"
>      "  fogFactor = exp( -gl_Fog.density * gl_Fog.density * fogCoord * 
> fogCoord);\n"
>      "  fogFactor = clamp(fogFactor, 0.0, 1.0);\n"
>      "}\n";
> @@ -284,9 +282,9 @@ osg::Group* createForest(TreeBin& forest
>              // Don´t track vertex color
>              material->setColorMode(Material::OFF);
>              material->setAmbient(Material::FRONT_AND_BACK,
> -                                 Vec4(.8f, .8f, .8f, 1.0f));
> +                                 Vec4(1.0f, 1.0f, 1.0f, 1.0f));
>              material->setDiffuse(Material::FRONT_AND_BACK,
> -                                 Vec4(.2f, .2f, .2f, 1.0f));
> +                                 Vec4(1.0f, 1.0f, 1.0f, 1.0f));
>          }
>          stateset->setAttributeAndModes(alphaFunc.get());
>          stateset->setAttribute(program.get());
>
>
>       
>
> ------------------------------------------------------------------------------
> Stay on top of everything new and different, both inside and 
> around Java (TM) technology - register by April 22, and save
> $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
> 300 plus technical and hands-on sessions. Register today. 
> Use priority code J9JMT32. http://p.sf.net/sfu/p
> _______________________________________________
> Flightgear-devel mailing list
> Flightgear-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/flightgear-devel
>
>   


-- 
Frédéric Bouvier
http://my.fotolia.com/frfoto/   Photo gallery
http://fgsd.sourceforge.net/    FlightGear Scenery Designer


------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and 
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today. 
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to