Remove unused cube-map from 2D clouds.

This commit is contained in:
James Turner 2014-03-05 14:42:29 +00:00
parent 18ff03acdf
commit 4ea8e4774e

View File

@ -40,7 +40,6 @@
#include <osg/TexEnv>
#include <osg/TexEnvCombine>
#include <osg/Texture2D>
#include <osg/TextureCubeMap>
#include <osg/TexMat>
#include <osg/Fog>
@ -62,7 +61,6 @@ using namespace osg;
static osg::ref_ptr<osg::StateSet> layer_states[SGCloudLayer::SG_MAX_CLOUD_COVERAGES];
static osg::ref_ptr<osg::StateSet> layer_states2[SGCloudLayer::SG_MAX_CLOUD_COVERAGES];
static osg::ref_ptr<osg::TextureCubeMap> cubeMap;
static bool state_initialized = false;
const std::string SGCloudLayer::SG_CLOUD_OVERCAST_STRING = "overcast";
@ -89,31 +87,8 @@ SGMakeState(const SGPath &path, const char* colorTexture,
stateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
stateSet->setAttributeAndModes(attribFactory->getStandardAlphaFunc());
stateSet->setAttributeAndModes(attribFactory->getStandardBlendFunc());
// osg::Material* material = new osg::Material;
// material->setColorMode(osg::Material::AMBIENT_AND_DIFFUSE);
// material->setEmission(osg::Material::FRONT_AND_BACK,
// osg::Vec4(0.05, 0.05, 0.05, 0));
// material->setSpecular(osg::Material::FRONT_AND_BACK,
// osg::Vec4(0, 0, 0, 1));
// stateSet->setAttribute(material);
stateSet->setMode(GL_FOG, osg::StateAttribute::OFF);
// OSGFIXME: invented by me ...
// stateSet->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);
// stateSet->setMode(GL_LIGHTING, osg::StateAttribute::ON);
// stateSet->setMode(GL_LIGHT0, osg::StateAttribute::OFF);
// If the normal texture is given prepare a bumpmapping enabled state
// if (normalTexture) {
// SGPath normalPath(path);
// normalPath.append(normalTexture);
// stateSet->setTextureAttribute(2, SGLoadTexture2D(normalPath));
// stateSet->setTextureMode(2, GL_TEXTURE_2D, osg::StateAttribute::ON);
// }
return stateSet;
}
@ -367,126 +342,6 @@ SGCloudLayer::rebuild()
SG_LOG(SG_ASTRO, SG_INFO, "initializing cloud layers");
// This bump mapping code was inspired by the tutorial available at
// http://www.paulsprojects.net/tutorials/simplebump/simplebump.html
// and a NVidia white paper
// http://developer.nvidia.com/object/bumpmappingwithregistercombiners.html
// The normal map textures were generated by the normal map Gimp plugin :
// http://nifelheim.dyndns.org/~cocidius/normalmap/
//
cubeMap = new osg::TextureCubeMap;
cubeMap->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR);
cubeMap->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
cubeMap->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE);
cubeMap->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE);
cubeMap->setWrap(osg::Texture::WRAP_R, osg::Texture::CLAMP_TO_EDGE);
const int size = 32;
const float half_size = 16.0f;
const float offset = 0.5f;
osg::Vec3 zero_normal(0.5, 0.5, 0.5);
osg::Image* image = new osg::Image;
image->allocateImage(size, size, 1, GL_RGB, GL_UNSIGNED_BYTE);
unsigned char *ptr = image->data(0, 0);
for (int j = 0; j < size; j++ ) {
for (int i = 0; i < size; i++ ) {
osg::Vec3 tmp(half_size, -( j + offset - half_size ),
-( i + offset - half_size ) );
tmp.normalize();
tmp = tmp*0.5 - zero_normal;
*ptr++ = (unsigned char)( tmp[ 0 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 1 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 2 ] * 255 );
}
}
cubeMap->setImage(osg::TextureCubeMap::POSITIVE_X, image);
image = new osg::Image;
image->allocateImage(size, size, 1, GL_RGB, GL_UNSIGNED_BYTE);
ptr = image->data(0, 0);
for (int j = 0; j < size; j++ ) {
for (int i = 0; i < size; i++ ) {
osg::Vec3 tmp(-half_size, -( j + offset - half_size ),
( i + offset - half_size ) );
tmp.normalize();
tmp = tmp*0.5 - zero_normal;
*ptr++ = (unsigned char)( tmp[ 0 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 1 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 2 ] * 255 );
}
}
cubeMap->setImage(osg::TextureCubeMap::NEGATIVE_X, image);
image = new osg::Image;
image->allocateImage(size, size, 1, GL_RGB, GL_UNSIGNED_BYTE);
ptr = image->data(0, 0);
for (int j = 0; j < size; j++ ) {
for (int i = 0; i < size; i++ ) {
osg::Vec3 tmp(( i + offset - half_size ), half_size,
( j + offset - half_size ) );
tmp.normalize();
tmp = tmp*0.5 - zero_normal;
*ptr++ = (unsigned char)( tmp[ 0 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 1 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 2 ] * 255 );
}
}
cubeMap->setImage(osg::TextureCubeMap::POSITIVE_Y, image);
image = new osg::Image;
image->allocateImage(size, size, 1, GL_RGB, GL_UNSIGNED_BYTE);
ptr = image->data(0, 0);
for (int j = 0; j < size; j++ ) {
for (int i = 0; i < size; i++ ) {
osg::Vec3 tmp(( i + offset - half_size ), -half_size,
-( j + offset - half_size ) );
tmp.normalize();
tmp = tmp*0.5 - zero_normal;
*ptr++ = (unsigned char)( tmp[ 0 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 1 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 2 ] * 255 );
}
}
cubeMap->setImage(osg::TextureCubeMap::NEGATIVE_Y, image);
image = new osg::Image;
image->allocateImage(size, size, 1, GL_RGB, GL_UNSIGNED_BYTE);
ptr = image->data(0, 0);
for (int j = 0; j < size; j++ ) {
for (int i = 0; i < size; i++ ) {
osg::Vec3 tmp(( i + offset - half_size ),
-( j + offset - half_size ), half_size );
tmp.normalize();
tmp = tmp*0.5 - zero_normal;
*ptr++ = (unsigned char)( tmp[ 0 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 1 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 2 ] * 255 );
}
}
cubeMap->setImage(osg::TextureCubeMap::POSITIVE_Z, image);
image = new osg::Image;
image->allocateImage(size, size, 1, GL_RGB, GL_UNSIGNED_BYTE);
ptr = image->data(0, 0);
for (int j = 0; j < size; j++ ) {
for (int i = 0; i < size; i++ ) {
osg::Vec3 tmp(-( i + offset - half_size ),
-( j + offset - half_size ), -half_size );
tmp.normalize();
tmp = tmp*0.5 - zero_normal;
*ptr++ = (unsigned char)( tmp[ 0 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 1 ] * 255 );
*ptr++ = (unsigned char)( tmp[ 2 ] * 255 );
}
}
cubeMap->setImage(osg::TextureCubeMap::NEGATIVE_Z, image);
osg::StateSet* state;
state = SGMakeState(texture_path, "overcast.png", "overcast_n.png");
layer_states[SG_CLOUD_OVERCAST] = state;