Q
如何查看阴影贴图
2
A
回答
0
为了从一个光(点或定向)查看阴影贴图可以执行以下操作:
// render scene as you normally would.
// after this call the shadowmp has been generated
renderer.render (scene, camera);
// render a scene of one quad to see the shadowmap on your canvas
quadMaterial.uniforms.map.value = light.shadowmap;
renderer.render (quadScene, quadCamera);
在需要设置了quadCamera
// set up an orthographic camera
quadCamera = new THREE.OrthographicCamera (textureWidth/- 2, textureHeight/2, textureWidth/2, textureHeight/- 2, -1000, 1000);
quadCamera.position.z = 100;
前一级和quadScene
var quadScene = new THREE.Scene();
quadMaterial = new THREE.ShaderMaterial ({
uniforms:
{
map: { type: "t", value: null },
},
vertexShader:
[
"varying vec2 vUv;",
"void main()",
"{",
"vUv = vec2 (uv.x, 1.0 - uv.y);",
"gl_Position = projectionMatrix * modelViewMatrix * vec4 (position, 1.0);",
"}"
].join("\n"),
fragmentShader:
[
"uniform sampler2D map;",
"varying vec2 vUv;",
"float unpack_depth (const in vec4 rgba_depth)",
"{",
"const vec4 bit_shift = vec4 (1.0/(256.0 * 256.0 * 256.0), 1.0/(256.0 * 256.0), 1.0/256.0, 1.0);",
"float depth = dot (rgba_depth, bit_shift);",
"return depth;",
"}",
"void main()",
"{",
"vec4 rgbaDepth = texture2D (map, vUv);",
"float fDepth = unpack_depth (rgbaDepth);",
"gl_FragColor = vec4 (vec3 (fDepth), 1.0);",
"}"
].join("\n"),
blending: THREE.NoBlending,
depthTest: false,
depthWrite: false,
});
quadScene.add (new THREE.Mesh (
new THREE.PlaneGeometry (textureWidth, textureHeight), quadMaterial));
0
看看: http://threejs.org/examples/webgl_multiple_canvases_complex.html 和 http://threejs.org/examples/webgl_multiple_canvases_grid.html
应该有THREE.MeshDepthMaterial,如果没有创建自己的深度样THREE.ShaderMaterial。
+0
MeshDepthMaterial用于将深度信息应用到网格上。这是我需要使用的ShaderMaterial而不知道如何。我发现这个小提琴http://jsfiddle.net/DW9q4/43/,但它只显示黑色。 – gaitat 2013-05-08 22:35:47
相关问题
- 1. 阴影贴图纹理alpha
- 2. 全方位阴影贴图
- 3. Android的阴影查看屏幕截图
- 4. Direct3D 9阴影贴图混合模式
- 5. 级联阴影贴图波光
- 6. 阴影贴图在某些情况下无法正确投影阴影?
- 7. 如何为多个点光源使用单个阴影贴图?
- 8. 如何将pcf添加到阴影贴图
- 9. 图像阴影
- 10. 防止看到UIView阴影
- 11. 添加阴影查看图层的问题
- 12. Extjs图表阴影
- 13. 如何添加阴影,核心图形
- 14. GLSL 330点光和阴影贴图粗糙
- 15. 使用延迟渲染(OpenGL)进行阴影贴图
- 16. 阴影贴图产生不正确的结果
- 17. ThreeJS [r85]:带阴影贴图的自定义着色器
- 18. 阴影贴图上的高斯模糊(FBO /纹理)
- 19. 阴影照片查看器 - 在iframe中查看屏幕上的照片
- 20. 如何阴影底部
- 21. 如何在Chart.js中过滤阴影或阴影?
- 22. UILabel看起来像有点阴影
- 23. iPhone UITableViewCell图层阴影
- 24. CSS阴影的图像
- 25. 带阴影的视图
- 26. PHPPresentation - 折线图阴影
- 27. 插图阴影效果
- 28. 如何设置一个盒子阴影的div元素的所有方面,左阴影,右阴影,顶部阴影,底部阴影?
- 29. OpenGL ES 2D阴影的阴影
- 30. 阴影质量(阴影痤疮)
在第二个画布上,设置渲染器,使用简单的片段着色器添加四边形,用于对纹理进行采样(您的部门h地图)并用正交相机渲染。 通常,深度贴图正在渲染到先前设置的渲染缓冲区中,并且使用quad的材质发送与渲染缓冲区颜色附件对应的sampler2D uniform。 我还没有把答案,因为我不知道这是你需要什么。 – 2013-05-08 09:56:40
是的,这是我想要的,但我找不到任何类似的例子。例如,如果场景有10个灯光,设置10个渲染器和10个不同的场景是不是很昂贵? – gaitat 2013-05-08 20:41:01
方向灯应该只有一个,所以只能有一个地图。 对于聚光灯,如果有多个,请不要生成阴影贴图,但要模拟阴影或使用某些投影贴图或类似工具来减轻面积,如果有N个光源,则不需要渲染N个深度贴图。如果你真的需要它,你应该考虑可能延迟渲染,你可以在threejs.org找到几个例子,但它仍在进行中。 – 2013-05-08 22:00:28