Changeset 9511
- Timestamp:
- 01/20/09 13:39:26 (3 years ago)
- Location:
- OpenSceneGraph/trunk
- Files:
-
- 11 modified
-
examples/osgvolume/osgvolume.cpp (modified) (3 diffs)
-
include/osgVolume/Property (modified) (3 diffs)
-
src/osgVolume/FixedFunctionTechnique.cpp (modified) (1 diff)
-
src/osgVolume/Property.cpp (modified) (2 diffs)
-
src/osgVolume/ShaderTechnique.cpp (modified) (1 diff)
-
src/osgVolume/Shaders/volume_frag.cpp (modified) (3 diffs)
-
src/osgVolume/Shaders/volume_mip_frag.cpp (modified) (2 diffs)
-
src/osgVolume/Shaders/volume_n_frag.cpp (modified) (2 diffs)
-
src/osgVolume/Shaders/volume_tf_frag.cpp (modified) (3 diffs)
-
src/osgVolume/Shaders/volume_tf_mip_frag.cpp (modified) (2 diffs)
-
src/osgVolume/Shaders/volume_tf_n_frag.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/examples/osgvolume/osgvolume.cpp
r9509 r9511 783 783 if (_updateAlphaCutOff && cpv._afProperty.valid()) 784 784 { 785 osg::notify(osg::NOTICE)<<"Setting afProperty to "<<v<<std::endl; 785 786 cpv._afProperty->setValue(v); 786 787 } … … 1346 1347 { 1347 1348 case(Standard): 1349 layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 1348 1350 break; 1349 1351 case(Light): 1352 layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 1350 1353 layer->addProperty(new osgVolume::LightingProperty); 1351 1354 break; … … 1354 1357 break; 1355 1358 case(MaximumIntensityProjection): 1359 layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 1356 1360 layer->addProperty(new osgVolume::MaximumIntensityProjectionProperty); 1357 1361 break; 1358 1362 } 1359 1363 1364 1365 tile->setVolumeTechnique(new osgVolume::ShaderTechnique); 1366 } 1367 else 1368 { 1360 1369 layer->addProperty(new osgVolume::AlphaFuncProperty(alphaFunc)); 1361 1362 tile->setVolumeTechnique(new osgVolume::ShaderTechnique);1363 }1364 else1365 {1366 1370 tile->setVolumeTechnique(new osgVolume::FixedFunctionTechnique); 1367 1371 } -
OpenSceneGraph/trunk/include/osgVolume/Property
r9503 r9511 17 17 #include <osg/TransferFunction> 18 18 #include <osg/Uniform> 19 #include <osg/AlphaFunc> 19 20 20 21 #include <osgVolume/Export> … … 151 152 152 153 /** Set the value.*/ 153 v oid setValue(float v) { _uniform->set(v); }154 virtual void setValue(float v) { _uniform->set(v); } 154 155 155 156 /** Get the value.*/ … … 199 200 virtual void accept(PropertyVisitor& pv) { pv.apply(*this); } 200 201 202 virtual void setValue(float v); 203 204 osg::AlphaFunc* getAlphaFunc() { return _alphaFunc.get(); } 205 206 const osg::AlphaFunc* getAlphaFunc() const { return _alphaFunc.get(); } 207 208 201 209 protected: 202 210 203 211 virtual ~AlphaFuncProperty() {} 212 213 osg::ref_ptr<osg::AlphaFunc> _alphaFunc; 204 214 }; 205 215 -
OpenSceneGraph/trunk/src/osgVolume/FixedFunctionTechnique.cpp
r9504 r9511 184 184 stateset->setMode(GL_LIGHTING,osg::StateAttribute::ON); 185 185 stateset->setMode(GL_BLEND,osg::StateAttribute::ON); 186 stateset->setAttributeAndModes(new osg::AlphaFunc(osg::AlphaFunc::GREATER,alphaFuncValue), osg::StateAttribute::ON); 186 187 if (cpv._afProperty.valid()) 188 { 189 stateset->setAttributeAndModes(cpv._afProperty->getAlphaFunc(), osg::StateAttribute::ON); 190 } 191 else 192 { 193 stateset->setAttributeAndModes(new osg::AlphaFunc(osg::AlphaFunc::GREATER,alphaFuncValue), osg::StateAttribute::ON); 194 } 187 195 188 196 osg::Material* material = new osg::Material; -
OpenSceneGraph/trunk/src/osgVolume/Property.cpp
r9503 r9511 107 107 ScalarProperty("AlphaFuncValue",value) 108 108 { 109 _alphaFunc = new osg::AlphaFunc(osg::AlphaFunc::GREATER, value); 109 110 } 110 111 … … 112 113 ScalarProperty(afp, copyop) 113 114 { 115 _alphaFunc = new osg::AlphaFunc(osg::AlphaFunc::GREATER, getValue()); 116 } 117 118 void AlphaFuncProperty::setValue(float v) 119 { 120 _uniform->set(v); 121 _alphaFunc->setReferenceValue(v); 114 122 } 115 123 -
OpenSceneGraph/trunk/src/osgVolume/ShaderTechnique.cpp
r9508 r9511 301 301 stateset->addUniform(transpancy); 302 302 303 osg::Uniform* alphaCutOff = new osg::Uniform("alphaCutOff",alphaFuncValue); 304 stateset->addUniform(alphaCutOff); 303 if (cpv._afProperty.valid()) 304 { 305 stateset->addUniform(cpv._afProperty->getUniform()); 306 } 305 307 306 308 stateset->setMode(GL_CULL_FACE, osg::StateAttribute::ON); -
OpenSceneGraph/trunk/src/osgVolume/Shaders/volume_frag.cpp
r9491 r9511 2 2 "uniform float sampleDensity;\n" 3 3 "uniform float transparency;\n" 4 "uniform float alphaCutOff;\n"4 "uniform float AlphaFuncValue;\n" 5 5 "\n" 6 6 "varying vec4 cameraPos;\n" … … 75 75 " vec4 color = texture3D( baseTexture, texcoord);\n" 76 76 " float r = color[3]*transparency;\n" 77 " if (r> alphaCutOff)\n"77 " if (r>AlphaFuncValue)\n" 78 78 " {\n" 79 79 " fragColor.xyz = fragColor.xyz*(1.0-r)+color.xyz*r;\n" … … 93 93 "\n" 94 94 " if (fragColor.w>1.0) fragColor.w = 1.0; \n" 95 " if (fragColor.w< alphaCutOff) discard;\n"95 " if (fragColor.w<AlphaFuncValue) discard;\n" 96 96 " \n" 97 97 " gl_FragColor = fragColor;\n" -
OpenSceneGraph/trunk/src/osgVolume/Shaders/volume_mip_frag.cpp
r9491 r9511 2 2 "uniform float sampleDensity;\n" 3 3 "uniform float transparency;\n" 4 "uniform float alphaCutOff;\n"4 "uniform float AlphaFuncValue;\n" 5 5 "\n" 6 6 "varying vec4 cameraPos;\n" … … 86 86 "\n" 87 87 " if (fragColor.w>1.0) fragColor.w = 1.0; \n" 88 " if (fragColor.w< alphaCutOff) discard;\n"88 " if (fragColor.w<AlphaFuncValue) discard;\n" 89 89 " \n" 90 90 " gl_FragColor = fragColor;\n" -
OpenSceneGraph/trunk/src/osgVolume/Shaders/volume_n_frag.cpp
r9491 r9511 3 3 "uniform float sampleDensity;\n" 4 4 "uniform float transparency;\n" 5 "uniform float alphaCutOff;\n"5 "uniform float AlphaFuncValue;\n" 6 6 "\n" 7 7 "varying vec4 cameraPos;\n" … … 104 104 " float r = color[3]*transparency;\n" 105 105 "#endif \n" 106 " if (r> alphaCutOff)\n"106 " if (r>AlphaFuncValue)\n" 107 107 " {\n" 108 108 " fragColor.xyz = fragColor.xyz*(1.0-r)+color.xyz*r;\n" -
OpenSceneGraph/trunk/src/osgVolume/Shaders/volume_tf_frag.cpp
r9491 r9511 3 3 "uniform float sampleDensity;\n" 4 4 "uniform float transparency;\n" 5 "uniform float alphaCutOff;\n"5 "uniform float AlphaFuncValue;\n" 6 6 "\n" 7 7 "varying vec4 cameraPos;\n" … … 78 78 "\n" 79 79 " float r = color[3]*transparency;\n" 80 " if (r> alphaCutOff)\n"80 " if (r>AlphaFuncValue)\n" 81 81 " {\n" 82 82 " fragColor.xyz = fragColor.xyz*(1.0-r)+color.xyz*r;\n" … … 96 96 "\n" 97 97 " if (fragColor.w>1.0) fragColor.w = 1.0; \n" 98 " if (fragColor.w< alphaCutOff) discard;\n"98 " if (fragColor.w<AlphaFuncValue) discard;\n" 99 99 " \n" 100 100 " gl_FragColor = fragColor;\n" -
OpenSceneGraph/trunk/src/osgVolume/Shaders/volume_tf_mip_frag.cpp
r9491 r9511 3 3 "uniform float sampleDensity;\n" 4 4 "uniform float transparency;\n" 5 "uniform float alphaCutOff;\n"5 "uniform float AlphaFuncValue;\n" 6 6 "\n" 7 7 "varying vec4 cameraPos;\n" … … 88 88 "\n" 89 89 " if (fragColor.w>1.0) fragColor.w = 1.0; \n" 90 " if (fragColor.w< alphaCutOff) discard;\n"90 " if (fragColor.w<AlphaFuncValue) discard;\n" 91 91 " gl_FragColor = fragColor;\n" 92 92 "}\n" -
OpenSceneGraph/trunk/src/osgVolume/Shaders/volume_tf_n_frag.cpp
r9491 r9511 4 4 "uniform float sampleDensity;\n" 5 5 "uniform float transparency;\n" 6 "uniform float alphaCutOff;\n"6 "uniform float AlphaFuncValue;\n" 7 7 "\n" 8 8 "varying vec4 cameraPos;\n" … … 91 91 "\n" 92 92 " float r = normal[3]*transparency;\n" 93 " if (r> alphaCutOff)\n"93 " if (r>AlphaFuncValue)\n" 94 94 " {\n" 95 95 " fragColor.xyz = fragColor.xyz*(1.0-r)+color.xyz*r;\n"
