当前位置: 首页 > news >正文

永久免费建网站红安建设局网站

永久免费建网站,红安建设局网站,建筑设计师接私活平台,wordpress可视化不显示前面打印了各个级别的hdr环境贴图#xff0c;也能看到预过滤环境贴图#xff0c;现在进行打印各个级别的预过滤环境贴图。 运行结果如下 代码如下#xff1a; #include osg/TextureCubeMap #include osg/TexGen #include osg/TexEnvCombine #…前面打印了各个级别的hdr环境贴图也能看到预过滤环境贴图现在进行打印各个级别的预过滤环境贴图。 运行结果如下 代码如下 #include osg/TextureCubeMap #include osg/TexGen #include osg/TexEnvCombine #include osgUtil/ReflectionMapGenerator #include osgDB/ReadFile #include osgViewer/Viewer #include osg/NodeVisitor #include osg/ShapeDrawable #include osgGA/TrackballManipulator #include osgDB/WriteFile static const char * vertexShader { //“#version 120 core\n” “in vec3 aPos;\n” “varying vec3 localPos;\n” “void main(void)\n” “{\n” “localPos aPos;\n” gl_Position ftransform();\n //“gl_Position view * view * vec4(aPos,1.0);” “}\n” }; static const char psShader { “varying vec3 localPos;\n” “uniform samplerCube environmentMap;” “uniform float roughness;” “const float PI 3.1415926;” “float VanDerCorpus(uint n, uint base) “{ float invBase 1.0 / float(base); float denom 1.0; float result 0.0; for (uint i 0u; i 32u; i) { if (n 0u) { denom mod(float(n), 2.0); result denom * invBase; invBase invBase / 2.0; n uint(float(n) / 2.0); } } “return result; “} “vec2 HammersleyNoBitOps(uint i, uint N) “{ return vec2(float(i) / float(N), VanDerCorpus(i, 2u)); “} //“float RadicalInverse_Vdc(uint bits)\n” //”{” //“bits (bits 16u) | (bits 16u);” //“bits ((bits 0x55555555u) 1u ) | (bits 0xAAAAAAAAu) 1u);” //“bits ((bits 0x33333333u) 2u ) | (bits 0xCCCCCCCCu) 2u);” //“bits ((bits 0x0F0F0F0Fu) 4u ) | (bits 0xF0F0F0F0u) 4u);” //“bits ((bits 0x00FF00FFu) 8u ) | (bits 0xFF00FF00u) 8u);” //“return float(bits) * 2.3283064365386963e-10;” //”}” //“vec2 Hammersley(uint i, uint N)” //”{” //“return vec2(float(i) / float(N), RadicalInverse_Vdc(i));” //”} “vec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness)” “{” “float a roughness * roughness;” “float phi 2.0 * PI * Xi.x;” float cosTheta sqrt((1.0 - Xi.y)/(1.0(aa-1.0) * Xi.y)); “float sinTheta sqrt(1.0 - cosTheta * cosTheta);” “vec3 H;” “H.x cos(phi) * sinTheta;” “H.y sin(phi) * sinTheta;” “H.z cosTheta;” “vec3 up abs(N.z) 0.999 ? vec3(0.0,0.0,1.0) : vec3(1.0,0.0,0.0);” “vec3 tangent normalize(cross(up,N));” “vec3 bitangent cross(N,tangent);” “vec3 sampleVec tangent * H.x bitangent * H.y N * H.z;” “return normalize(sampleVec);” “}” void main() { vec3 N normalize(localPos); vec3 R N; vec3 V R; const uint SAMPLE_COUNT 1024u; float totalWeight 0.0; vec3 prefilteredColor vec3(0.0); for (uint i 0u; i SAMPLE_COUNT; i) { vec2 Xi HammersleyNoBitOps(i, SAMPLE_COUNT); vec3 H ImportanceSampleGGX(Xi, N, roughness); vec3 L normalize(2.0 * dot(V, H) * H - V); float NdotL max(dot(N, L), 0.0); if (NdotL 0.0) { prefilteredColor texture(environmentMap, L).rgb * NdotL; totalWeight NdotL; } } prefilteredColor prefilteredColor / totalWeight; gl_FragColor vec4(prefilteredColor, 1.0); } }; class MyNodeVisitor : public osg::NodeVisitor { public: MyNodeVisitor() : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) { } void apply(osg::Geode geode) {int count geode.getNumDrawables();for (int i 0; i count; i){osg::ref_ptrosg::Geometry geometry geode.getDrawable(i)-asGeometry();if (!geometry.valid()){continue;}osg::Array* vertexArray geometry-getVertexArray();geometry-setVertexAttribArray(1, vertexArray);}traverse(geode); }}; osg::ref_ptrosg::TextureCubeMap getTextureCubeMap(osgViewer::Viewer viewer, int textureWidth, int textureHeight) { unsigned int screenWidth, screenHeight; osg::GraphicsContext::WindowingSystemInterface * wsInterface osg::GraphicsContext::getWindowingSystemInterface(); wsInterface-getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), screenWidth, screenHeight); osg::ref_ptrosg::GraphicsContext::Traits traits new osg::GraphicsContext::Traits; traits-x 0; traits-y 0; traits-width screenWidth; traits-height screenHeight; traits-windowDecoration false; traits-doubleBuffer true; traits-sharedContext 0; traits-readDISPLAY(); traits-setUndefinedScreenDetailsToDefaultScreen();osg::ref_ptrosg::GraphicsContext gc osg::GraphicsContext::createGraphicsContext(traits.get()); if (!gc) {osg::notify(osg::NOTICE) GraphicsWindow has not been created successfully. std::endl;return NULL; }osg::ref_ptrosg::TextureCubeMap texture new osg::TextureCubeMap;texture-setTextureSize(textureWidth, textureHeight); texture-setInternalFormat(GL_RGB); texture-setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR); texture-setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR); texture-setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE); texture-setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE); texture-setWrap(osg::Texture::WRAP_R, osg::Texture::CLAMP_TO_EDGE);osg::Camera::RenderTargetImplementation renderTargetImplementation osg::Camera::FRAME_BUFFER_OBJECT; // front face {osg::ref_ptrosg::Camera camera new osg::Camera;camera-setName(Front face camera);camera-setGraphicsContext(gc.get());camera-setViewport(new osg::Viewport(0, 0, textureWidth, textureHeight));camera-setAllowEventFocus(false);camera-setRenderTargetImplementation(renderTargetImplementation);camera-setRenderOrder(osg::Camera::PRE_RENDER);//关联采样贴图camera-attach(osg::Camera::COLOR_BUFFER, texture, 0, osg::TextureCubeMap::POSITIVE_Y);osg::ref_ptrosg::Image printImage new osg::Image;printImage-setFileName(camera-getName());printImage-allocateImage(textureWidth, textureHeight, 1, GL_RGBA, GL_UNSIGNED_BYTE);texture-setImage(0, printImage);camera-attach(osg::Camera::COLOR_BUFFER, printImage);viewer.addSlave(camera.get(), osg::Matrixd(), osg::Matrixd()); }// top face {osg::ref_ptrosg::Camera camera new osg::Camera;camera-setName(Top face camera);camera-setGraphicsContext(gc.get());camera-setViewport(new osg::Viewport(0, 0, textureWidth, textureHeight));camera-setAllowEventFocus(false);camera-setRenderTargetImplementation(renderTargetImplementation);camera-setRenderOrder(osg::Camera::PRE_RENDER);//关联采样贴图camera-attach(osg::Camera::COLOR_BUFFER, texture, 0, osg::TextureCubeMap::POSITIVE_Z);osg::ref_ptrosg::Image printImage new osg::Image;printImage-setFileName(camera-getName());printImage-allocateImage(textureWidth, textureHeight, 1, GL_RGBA, GL_UNSIGNED_BYTE);texture-setImage(1, printImage);camera-attach(osg::Camera::COLOR_BUFFER, printImage);viewer.addSlave(camera.get(), osg::Matrixd(), osg::Matrixd::rotate(osg::inDegrees(-90.0f), 1.0, 0.0, 0.0)); }// left face {osg::ref_ptrosg::Camera camera new osg::Camera;camera-setName(Left face camera);camera-setGraphicsContext(gc.get());camera-setViewport(new osg::Viewport(0, 0, textureWidth, textureHeight));camera-setAllowEventFocus(false);camera-setRenderTargetImplementation(renderTargetImplementation);camera-setRenderOrder(osg::Camera::PRE_RENDER);//关联采样贴图camera-attach(osg::Camera::COLOR_BUFFER, texture, 0, osg::TextureCubeMap::NEGATIVE_X);osg::ref_ptrosg::Image printImage new osg::Image;printImage-setFileName(camera-getName());printImage-allocateImage(textureWidth, textureHeight, 1, GL_RGBA, GL_UNSIGNED_BYTE);texture-setImage(2, printImage);camera-attach(osg::Camera::COLOR_BUFFER, printImage);viewer.addSlave(camera.get(), osg::Matrixd(), osg::Matrixd::rotate(osg::inDegrees(-90.0f), 0.0, 1.0, 0.0) * osg::Matrixd::rotate(osg::inDegrees(-90.0f), 0.0, 0.0, 1.0)); }// right face {osg::ref_ptrosg::Camera camera new osg::Camera;camera-setName(Right face camera);camera-setGraphicsContext(gc.get());camera-setViewport(new osg::Viewport(0, 0, textureWidth, textureHeight));camera-setAllowEventFocus(false);camera-setRenderTargetImplementation(renderTargetImplementation);camera-setRenderOrder(osg::Camera::PRE_RENDER);//关联采样贴图camera-attach(osg::Camera::COLOR_BUFFER, texture, 0, osg::TextureCubeMap::POSITIVE_X);osg::ref_ptrosg::Image printImage new osg::Image;printImage-setFileName(camera-getName());printImage-allocateImage(textureWidth, textureHeight, 1, GL_RGBA, GL_UNSIGNED_BYTE);texture-setImage(3, printImage);camera-attach(osg::Camera::COLOR_BUFFER, printImage);viewer.addSlave(camera.get(), osg::Matrixd(), osg::Matrixd::rotate(osg::inDegrees(90.0f), 0.0, 1.0, 0.0) * osg::Matrixd::rotate(osg::inDegrees(90.0f), 0.0, 0.0, 1.0));}// bottom face {osg::ref_ptrosg::Camera camera new osg::Camera;camera-setGraphicsContext(gc.get());camera-setName(Bottom face camera);camera-setViewport(new osg::Viewport(0, 0, textureWidth, textureHeight));camera-setAllowEventFocus(false);camera-setRenderTargetImplementation(renderTargetImplementation);camera-setRenderOrder(osg::Camera::PRE_RENDER);//关联采样贴图camera-attach(osg::Camera::COLOR_BUFFER, texture, 0, osg::TextureCubeMap::NEGATIVE_Z);osg::ref_ptrosg::Image printImage new osg::Image;printImage-setFileName(camera-getName());printImage-allocateImage(textureWidth, textureHeight, 1, GL_RGBA, GL_UNSIGNED_BYTE);texture-setImage(4, printImage);camera-attach(osg::Camera::COLOR_BUFFER, printImage);viewer.addSlave(camera.get(), osg::Matrixd(), osg::Matrixd::rotate(osg::inDegrees(90.0f), 1.0, 0.0, 0.0) * osg::Matrixd::rotate(osg::inDegrees(180.0f), 0.0, 0.0, 1.0));}// back face {osg::ref_ptrosg::Camera camera new osg::Camera;camera-setName(Back face camera);camera-setGraphicsContext(gc.get());camera-setViewport(new osg::Viewport(0, 0, textureWidth, textureHeight));camera-setAllowEventFocus(false);camera-setRenderTargetImplementation(renderTargetImplementation);camera-setRenderOrder(osg::Camera::PRE_RENDER);//关联采样贴图camera-attach(osg::Camera::COLOR_BUFFER, texture, 0, osg::TextureCubeMap::NEGATIVE_Y);osg::ref_ptrosg::Image printImage new osg::Image;printImage-setFileName(camera-getName());printImage-allocateImage(textureWidth, textureHeight, 1, GL_RGBA, GL_UNSIGNED_BYTE);texture-setImage(5, printImage);camera-attach(osg::Camera::COLOR_BUFFER, printImage);viewer.addSlave(camera.get(), osg::Matrixd(), osg::Matrixd::rotate(osg::inDegrees(180.0f), 1.0, 0.0, 0.0));}viewer.getCamera()-setProjectionMatrixAsPerspective(90.0f, 1.0, 0.1, 10);//viewer.getCamera()-setNearFarRatio(0.0001f); return texture;} int main() { int level 0; //0,1,2,3,4 int maxLevel 4; float roughness level * 1.0 / maxLevel; int textureWidth 128; int textureHeight 128; float ratio std::pow(0.5, level); int mipWidth textureWidth * ratio; int mipHeight textureHeight * ratio; std::string strDir e:/hdr/lod/ std::to_string(level) /;osg::ref_ptrosg::TextureCubeMap tcm new osg::TextureCubeMap; tcm-setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR); tcm-setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR); tcm-setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE); tcm-setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE); tcm-setWrap(osg::Texture::WRAP_R, osg::Texture::CLAMP_TO_EDGE);std::string strImagePosX strDir Right face camera.bmp; osg::ref_ptrosg::Image imagePosX osgDB::readImageFile(strImagePosX); tcm-setImage(osg::TextureCubeMap::POSITIVE_X, imagePosX); std::string strImageNegX strDir Left face camera.bmp; osg::ref_ptrosg::Image imageNegX osgDB::readImageFile(strImageNegX); tcm-setImage(osg::TextureCubeMap::NEGATIVE_X, imageNegX);std::string strImagePosY strDir Front face camera.bmp;; osg::ref_ptrosg::Image imagePosY osgDB::readImageFile(strImagePosY); tcm-setImage(osg::TextureCubeMap::POSITIVE_Y, imagePosY); std::string strImageNegY strDir Back face camera.bmp;; osg::ref_ptrosg::Image imageNegY osgDB::readImageFile(strImageNegY); tcm-setImage(osg::TextureCubeMap::NEGATIVE_Y, imageNegY);std::string strImagePosZ strDir Top face camera.bmp; osg::ref_ptrosg::Image imagePosZ osgDB::readImageFile(strImagePosZ); tcm-setImage(osg::TextureCubeMap::POSITIVE_Z, imagePosZ); std::string strImageNegZ strDir Bottom face camera.bmp; osg::ref_ptrosg::Image imageNegZ osgDB::readImageFile(strImageNegZ); tcm-setImage(osg::TextureCubeMap::NEGATIVE_Z, imageNegZ);osg::ref_ptrosg::Box box new osg::Box(osg::Vec3(0, 0, 0), 1); osg::ref_ptrosg::ShapeDrawable drawable new osg::ShapeDrawable(box); osg::ref_ptrosg::Geode geode new osg::Geode; geode-addDrawable(drawable); MyNodeVisitor nv; geode-accept(nv); osg::ref_ptrosg::StateSet stateset geode-getOrCreateStateSet(); stateset-setTextureAttributeAndModes(0, tcm, osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON);//shaderosg::ref_ptrosg::Shader vs1 new osg::Shader(osg::Shader::VERTEX, vertexShader); osg::ref_ptrosg::Shader ps1 new osg::Shader(osg::Shader::FRAGMENT, psShader); osg::ref_ptrosg::Program program1 new osg::Program; program1-addShader(vs1); program1-addShader(ps1); program1-addBindAttribLocation(aPos, 1);osg::ref_ptrosg::Uniform tex0Uniform new osg::Uniform(environmentMap, 0); stateset-addUniform(tex0Uniform); osg::ref_ptrosg::Uniform roughnessUniform new osg::Uniform(roughness, roughness); stateset-addUniform(roughnessUniform); stateset-setAttribute(program1, osg::StateAttribute::ON);osgViewer::Viewer viewer; osg::ref_ptrosgGA::TrackballManipulator manipulator new osgGA::TrackballManipulator(); viewer.setCameraManipulator(manipulator); osg::Vec3d newEye(0, 0, 0); osg::Vec3 newCenter(0, 0, 0); osg::Vec3 newUp(0, 1, 0); manipulator-setHomePosition(newEye, newCenter, newUp); osg::ref_ptrosg::TextureCubeMap textureCubeMap getTextureCubeMap(viewer, mipWidth, mipHeight); viewer.setSceneData(geode.get());bool bPrinted false; while (!viewer.done()) {viewer.frame();if (!bPrinted){bPrinted true;int imageNumber textureCubeMap-getNumImages();for (int i 0; i imageNumber; i){osg::ref_ptrosg::Image theImage textureCubeMap-getImage(i);std::string strPrintName e:/hdr/Prefilter/ std::to_string(level) / theImage-getFileName() .bmp;osgDB::writeImageFile(*theImage, strPrintName);}} } return 0;}
http://wiki.neutronadmin.com/news/411535/

相关文章:

  • 太原模板建站典型十大优秀网络营销案例
  • 专业餐饮网站建设企业网站的设计怎么做
  • 东莞网站建设(曼哈顿信科)中国建设网官方
  • 四川省住房和城乡建设厅网站首页wordpress阿里云数据库
  • 黑龙江省农业网站建设情况北京pc端网站开发
  • 杭州 专业网站建设 网络服务南京做网站价格
  • 系统网站那个网站科四做课时
  • 旅游的网站怎么做的品牌推广和营销推广
  • 深圳网站设计公司哪种下载安装注册app
  • 视频网站建设解决方案万网创始人
  • 产品类型 速成网站WordPress自己安装了插件
  • 小说代理平台泰安网站建设与优化
  • PHP套模板做网站网页无法访问qq可以登陆
  • 社区网站怎么建企业营销推广公司
  • 微网站首选公司旅游网站模板html免费下载
  • 分析企业网站建设流程广州网站设计公司济南兴田德润o评价
  • 湖南建设银行网站济南做兼职网站
  • 浙江省建设执业资格中心网站中山精品网站建设流程
  • 做古玩的网站北京做网站建设的公司排名
  • 云南澄江县建设局网站网站被黑能黑多长时间
  • 阿里云做网站经费做搜狗手机网站点
  • 江阴哪里有做网站的福州百度关键词排名
  • wordpress模板 门户网站流水线 东莞网站建设
  • 做网站电话销售说辞关键词排名怎么做好
  • 电商平台网站多少钱站酷网如何接单
  • 济南网站建设询问臻动传媒网站域名的根目录在哪里
  • 如何使用天翼云主机建设网站北京网站假设
  • 贵州网站公司临西企业做网站
  • 免费网站做seo网站导航栏动效怎么做
  • 网站建设整改情况东莞建材网站建设