Added setting of various filters and setResizeNonPowerOfTwoHint(false) on normals maps etc.
This commit is contained in:
parent
5a9e957412
commit
21865d3ec1
@ -923,12 +923,24 @@ osg::Node* createShaderModel(ShadingModel shadingModel,
|
|||||||
|
|
||||||
osg::Texture3D* normalMap = new osg::Texture3D;
|
osg::Texture3D* normalMap = new osg::Texture3D;
|
||||||
normalMap->setImage(normalmap_3d);
|
normalMap->setImage(normalmap_3d);
|
||||||
|
normalMap->setResizeNonPowerOfTwoHint(false);
|
||||||
|
normalMap->setInternalFormatMode(internalFormatMode);
|
||||||
|
normalMap->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR);
|
||||||
|
normalMap->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
|
||||||
|
normalMap->setWrap(osg::Texture::WRAP_R,osg::Texture::CLAMP_TO_EDGE);
|
||||||
|
normalMap->setWrap(osg::Texture::WRAP_S,osg::Texture::CLAMP_TO_EDGE);
|
||||||
|
normalMap->setWrap(osg::Texture::WRAP_T,osg::Texture::CLAMP_TO_EDGE);
|
||||||
|
|
||||||
stateset->setTextureAttributeAndModes(1,normalMap,osg::StateAttribute::ON);
|
stateset->setTextureAttributeAndModes(1,normalMap,osg::StateAttribute::ON);
|
||||||
|
|
||||||
if (tf)
|
if (tf)
|
||||||
{
|
{
|
||||||
osg::Texture1D* texture1D = new osg::Texture1D;
|
osg::Texture1D* texture1D = new osg::Texture1D;
|
||||||
texture1D->setImage(tf->getImage());
|
texture1D->setImage(tf->getImage());
|
||||||
|
texture1D->setResizeNonPowerOfTwoHint(false);
|
||||||
|
texture1D->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR);
|
||||||
|
texture1D->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
|
||||||
|
texture1D->setWrap(osg::Texture::WRAP_R,osg::Texture::CLAMP_TO_EDGE);
|
||||||
stateset->setTextureAttributeAndModes(0,texture1D,osg::StateAttribute::ON);
|
stateset->setTextureAttributeAndModes(0,texture1D,osg::StateAttribute::ON);
|
||||||
|
|
||||||
osg::Shader* fragmentShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "volume-tf-iso.frag");
|
osg::Shader* fragmentShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "volume-tf-iso.frag");
|
||||||
@ -969,12 +981,24 @@ osg::Node* createShaderModel(ShadingModel shadingModel,
|
|||||||
|
|
||||||
osg::Texture3D* normalMap = new osg::Texture3D;
|
osg::Texture3D* normalMap = new osg::Texture3D;
|
||||||
normalMap->setImage(normalmap_3d);
|
normalMap->setImage(normalmap_3d);
|
||||||
|
normalMap->setResizeNonPowerOfTwoHint(false);
|
||||||
|
normalMap->setInternalFormatMode(internalFormatMode);
|
||||||
|
normalMap->setFilter(osg::Texture3D::MIN_FILTER, osg::Texture::LINEAR);
|
||||||
|
normalMap->setFilter(osg::Texture3D::MAG_FILTER, osg::Texture::LINEAR);
|
||||||
|
normalMap->setWrap(osg::Texture3D::WRAP_R,osg::Texture3D::CLAMP_TO_EDGE);
|
||||||
|
normalMap->setWrap(osg::Texture3D::WRAP_S,osg::Texture3D::CLAMP_TO_EDGE);
|
||||||
|
normalMap->setWrap(osg::Texture3D::WRAP_T,osg::Texture3D::CLAMP_TO_EDGE);
|
||||||
|
|
||||||
stateset->setTextureAttributeAndModes(1,normalMap,osg::StateAttribute::ON);
|
stateset->setTextureAttributeAndModes(1,normalMap,osg::StateAttribute::ON);
|
||||||
|
|
||||||
if (tf)
|
if (tf)
|
||||||
{
|
{
|
||||||
osg::Texture1D* texture1D = new osg::Texture1D;
|
osg::Texture1D* texture1D = new osg::Texture1D;
|
||||||
texture1D->setImage(tf->getImage());
|
texture1D->setImage(tf->getImage());
|
||||||
|
texture1D->setResizeNonPowerOfTwoHint(false);
|
||||||
|
texture1D->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR);
|
||||||
|
texture1D->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
|
||||||
|
texture1D->setWrap(osg::Texture::WRAP_R,osg::Texture::CLAMP_TO_EDGE);
|
||||||
stateset->setTextureAttributeAndModes(0,texture1D,osg::StateAttribute::ON);
|
stateset->setTextureAttributeAndModes(0,texture1D,osg::StateAttribute::ON);
|
||||||
|
|
||||||
osg::Shader* fragmentShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "volume-tf-n.frag");
|
osg::Shader* fragmentShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "volume-tf-n.frag");
|
||||||
@ -1009,8 +1033,15 @@ osg::Node* createShaderModel(ShadingModel shadingModel,
|
|||||||
{
|
{
|
||||||
osg::Texture1D* texture1D = new osg::Texture1D;
|
osg::Texture1D* texture1D = new osg::Texture1D;
|
||||||
texture1D->setImage(tf->getImage());
|
texture1D->setImage(tf->getImage());
|
||||||
|
texture1D->setResizeNonPowerOfTwoHint(false);
|
||||||
|
texture1D->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR);
|
||||||
|
texture1D->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
|
||||||
|
texture1D->setWrap(osg::Texture::WRAP_R,osg::Texture::CLAMP_TO_EDGE);
|
||||||
stateset->setTextureAttributeAndModes(1,texture1D,osg::StateAttribute::ON);
|
stateset->setTextureAttributeAndModes(1,texture1D,osg::StateAttribute::ON);
|
||||||
|
|
||||||
|
osg::Uniform* tfTextureSampler = new osg::Uniform("tfTexture",1);
|
||||||
|
stateset->addUniform(tfTextureSampler);
|
||||||
|
|
||||||
osg::Shader* fragmentShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "volume-tf.frag");
|
osg::Shader* fragmentShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "volume-tf.frag");
|
||||||
if (fragmentShader)
|
if (fragmentShader)
|
||||||
{
|
{
|
||||||
@ -1022,9 +1053,6 @@ osg::Node* createShaderModel(ShadingModel shadingModel,
|
|||||||
program->addShader(new osg::Shader(osg::Shader::FRAGMENT, volume_tf_frag));
|
program->addShader(new osg::Shader(osg::Shader::FRAGMENT, volume_tf_frag));
|
||||||
}
|
}
|
||||||
|
|
||||||
osg::Uniform* tfTextureSampler = new osg::Uniform("tfTexture",1);
|
|
||||||
stateset->addUniform(tfTextureSampler);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user