Подписанные отрицательные значения текстуры обнуляются

Я пытаюсь использовать 3D подписанную текстуру для объемного рендеринга. Проблема в том, что все вокселы, значения которых являются отрицательными, при доступе в шейдере фиксируются на нуле. Вот как я создаю изображение и устанавливаю 3D текстуру:

char* volumeData = LoadVolume();
osg::ref_ptr<osg::Texture3D> volumeTexture = new osg::Texture3D;
osg::ref_ptr<osg::Image> volumeImage =new Image;    volumeImage->setImage(textureWidth,textureHeight,textureDepth,GL_LUMINANCE16,GL_LUMINANCE ,GL_SHORT,volumeData,Image::AllocationMode::USE_NEW_DELETE); 
volumeTexture->setImage(volumeImage);

Я попытался gDebugger прочитать значения textels'в памяти GPU, и я подтвердил, что все отрицательные вокселы ограничены до нуля.

1 ответ

Ваша проблема в том, что вы используете GL_LUMINANCE, который нормализован. Используйте ненормализованные форматы текстур. Вы можете найти их здесь http://www.opengl.org/wiki/Image_Format

Другие вопросы по тегам