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 > [email protected] > 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 [email protected] https://lists.sourceforge.net/lists/listinfo/flightgear-devel

