diff --git a/src/osgVolume/FixedFunctionTechnique.cpp b/src/osgVolume/FixedFunctionTechnique.cpp index d3885f340..404186263 100644 --- a/src/osgVolume/FixedFunctionTechnique.cpp +++ b/src/osgVolume/FixedFunctionTechnique.cpp @@ -98,9 +98,25 @@ osg::Node* createCube(const osg::Vec3& center, float size, unsigned int numSlice void FixedFunctionTechnique::init() { - osg::notify(osg::NOTICE)<<"FixedFunctionTechnique::init()"<getLayer()==0) + { + osg::notify(osg::NOTICE)<<"FixedFunctionTechnique::init(), error no layer assigend to volume tile."<getLayer()->getImage()==0) + { + osg::notify(osg::NOTICE)<<"FixedFunctionTechnique::init(), error no image assigned to layer."<getLayer()==0) + { + osg::notify(osg::NOTICE)<<"RayTracedTechnique::init(), error no layer assigend to volume tile."<getLayer()->getImage()==0) + { + osg::notify(osg::NOTICE)<<"RayTracedTechnique::init(), error no image assigned to layer."<getLocator(); image_3d = _volumeTile->getLayer()->getImage(); - + + CollectPropertiesVisitor cpv; if (_volumeTile->getLayer()->getProperty()) { @@ -113,7 +130,7 @@ void RayTracedTechnique::init() } - osg::notify(osg::NOTICE)<<"Matrix = "<setImage(tf->getImage()); texture1D->setResizeNonPowerOfTwoHint(false); @@ -329,7 +354,7 @@ void RayTracedTechnique::init() } else - { + { osg::Shader* fragmentShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "shaders/volume.frag"); if (fragmentShader) @@ -362,6 +387,13 @@ void RayTracedTechnique::init() stateset->addUniform(new osg::Uniform("AlphaFuncValue",alphaFuncValue)); + if (enableBlending) + { + stateset->setMode(GL_BLEND, osg::StateAttribute::ON); + stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); + } + + stateset->setMode(GL_CULL_FACE, osg::StateAttribute::ON); osg::TexGen* texgen = new osg::TexGen; diff --git a/src/osgVolume/Shaders/volume_iso_frag.cpp b/src/osgVolume/Shaders/volume_iso_frag.cpp index fe485884e..2935db524 100644 --- a/src/osgVolume/Shaders/volume_iso_frag.cpp +++ b/src/osgVolume/Shaders/volume_iso_frag.cpp @@ -108,8 +108,9 @@ char volume_iso_frag[] = "uniform sampler3D baseTexture;\n" " color.y = lightScale;\n" " color.z = lightScale;\n" " }\n" - " \n" - " if (color.w>1.0) color.w = 1.0; \n" + "\n" + " color.a = 1.0;\n" + "\n" " gl_FragColor = color;\n" " \n" " return;\n" @@ -124,4 +125,5 @@ char volume_iso_frag[] = "uniform sampler3D baseTexture;\n" "\n" " // we didn't find an intersection so just discard fragment\n" " discard;\n" - "}\n"; + "}\n" + "\n";