Javascript three.js中的阴影贴图问题,带有更改顶点位置的ShaderMaterial
在我的项目中,我使用着色器材质渲染地形。顶点位置在顶点着色器中根据高度贴图纹理进行修改:Javascript three.js中的阴影贴图问题,带有更改顶点位置的ShaderMaterial,javascript,three.js,webgl,Javascript,Three.js,Webgl,在我的项目中,我使用着色器材质渲染地形。顶点位置在顶点着色器中根据高度贴图纹理进行修改: vec4 mvPosition = modelViewMatrix * vec4( position + normal * heightMapScale, 1.0); gl_Position = projectionMatrix * mvPosition; 地形看起来不错,但当我试图在上面添加对象时,阴影很奇怪。似乎顶点不知道它们的新位置:( 请转到以下链接获取截图和现场演示(很抱歉,我没有足够的声誉在这
vec4 mvPosition = modelViewMatrix * vec4( position + normal * heightMapScale, 1.0);
gl_Position = projectionMatrix * mvPosition;
地形看起来不错,但当我试图在上面添加对象时,阴影很奇怪。似乎顶点不知道它们的新位置:(
请转到以下链接获取截图和现场演示(很抱歉,我没有足够的声誉在这里发布图片)
截图:
现场演示:
可以看到左侧的立方体具有正确的阴影,而右侧的立方体没有,因为面在着色器中向上移动
有什么办法解决这个问题吗
谢谢gman,谢谢你的建议!确实应该修改更多的着色器。对于我的问题,worldpos_顶点中的worldPosition变量也应该更新:
// move the vertex position
"float fBump = position.x < 0. ? 0. : 350.;",
"vec4 newPosition = vec4( position + normal * fBump, 1.0);",
// to replace THREE.ShaderChunk[ "default_vertex" ]
"vec4 mvPosition = modelViewMatrix * newPosition;",
"gl_Position = projectionMatrix * mvPosition;",
// to replace THREE.ShaderChunk[ "worldpos_vertex" ]
"vec4 worldPosition = modelMatrix * newPosition;",
//移动顶点位置
“浮动泵=位置x<0.?0:350.;”,
“vec4 newPosition=vec4(位置+正常*fBump,1.0);”,
//替换三个.ShaderChunk[“默认顶点”]
“vec4 mvPosition=modelViewMatrix*newPosition;”,
“gl_位置=投影矩阵*mvPosition;”,
//替换三个。ShaderChunk[“worldpos_顶点”]
“vec4 worldPosition=modelMatrix*newPosition;”,
此处更新的演示:我想这不是一个有用的答案,但您需要修改阴影渲染着色器以进行相同的高度贴图调整