查看: 1490|回复: 1

请问如何使用LightSpacePerspectiveShadowMap中的shader

[复制链接]

该用户从未签到

发表于 2013-10-29 19:02:53 | 显示全部楼层 |阅读模式
在我的项目中使用ShadowMap类能显示阴影,但阴影明显不正确(主要是我再在平面上另一位置添加另一模型时其他模型在平面上显示的阴影出错,我试了下不使用shader出现同样的问题);使用的代码如下:

gl_FragColor = gl_Color * shadow2DProj( osgShadow_shadowTexture, gl_TexCoord[1] ).r;

在论坛上翻看了几个ShadowMap的贴子,锐爷推荐用ViewDependentShadowMap 或LightSpacePerspectiveShadowMap,但我直接使用上面的shader无法显示阴影,仿照StandardShadowMap中的源码中写的代码如下:

vec4 colorAmbientEmissive = gl_FrontLightModelProduct.sceneColor;
vec4 color = texture2D( baseTexture, gl_TexCoord[0].xy );
color *= mix( colorAmbientEmissive, gl_Color, shadow2DProj( osgShadow_shadowTexture, gl_TexCoord[1] ).r );
gl_FragColor = color;

阴影还是无法显示。如果我不添加shader阴影显示非常正确,因现在只是在弄阴影,平面上并未贴其他纹理,所以觉得纹理通道就用的默认的。在后面要对平面的纹理和颜色的显示进行动态变化,所以不用shader不行。

参照源码,未使用顶点着色器。求大神们指导下吧!

该用户从未签到

 楼主| 发表于 2013-10-31 10:26:01 | 显示全部楼层
通过两天探索,问题终于解决了,shadowMap 中用的uniform sampler2DShadow osgShadow_shadowTexture,ViewDependentShadowMap:shadowTexture0,LightSpacePerspectiveShadowMap:shadowTexture。源码中变量名不一致啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表