diff --git a/src/osgVolume/RayTracedTechnique.cpp b/src/osgVolume/RayTracedTechnique.cpp index 3d0fcd2c2..84a5b3dac 100644 --- a/src/osgVolume/RayTracedTechnique.cpp +++ b/src/osgVolume/RayTracedTechnique.cpp @@ -173,8 +173,12 @@ void RayTracedTechnique::init() } + bool enableBlending = false; + if (shadingModel==MaximumIntensityProjection) { + enableBlending = true; + if (tf) { osg::Texture1D* texture1D = new osg::Texture1D; @@ -259,6 +263,8 @@ void RayTracedTechnique::init() } else if (shadingModel==Light) { + enableBlending = true; + if (tf) { osg::Texture1D* texture1D = new osg::Texture1D; @@ -301,10 +307,12 @@ void RayTracedTechnique::init() } else { + enableBlending = true; + if (tf) { osg::notify(osg::NOTICE)<<"Setting up TF path"<setImage(tf->getImage()); texture1D->setResizeNonPowerOfTwoHint(false); @@ -329,7 +337,7 @@ void RayTracedTechnique::init() } else - { + { osg::Shader* fragmentShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "shaders/volume.frag"); if (fragmentShader) @@ -362,6 +370,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";