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. OpenGL陰影貼圖
- 2. OpenGL | ES添加陰影/陰影貼圖
- 3. 陰影貼圖紋理alpha
- 4. 全方位陰影貼圖
- 5. Android的陰影查看屏幕截圖
- 6. UISplitViewController詳細查看陰影
- 7. 雙拋物面陰影貼圖
- 8. 級聯陰影貼圖波光
- 9. 呈現陰影貼圖到屏幕?
- 10. 級聯陰影貼圖縮小
- 11. 爲什麼在方差陰影貼圖
- 12. Direct3D 9陰影貼圖混合模式
- 13. 陰影貼圖在某些情況下無法正確投影陰影?
- 14. 如何將pcf添加到陰影貼圖
- 15. 如何爲多個點光源使用單個陰影貼圖?
- 16. OpenGL陰影立方體貼圖 - 查找問題
- 17. 防止看到UIView陰影
- 18. 圖像陰影
- 19. 添加陰影查看圖層的問題
- 20. Extjs圖表陰影
- 21. 如何透明刪除圖像陰影
- 22. 如何添加陰影,核心圖形
- 23. 如何使用圖像創建陰影
- 24. 在OpenGL中發送陰影貼圖到着色器
- 25. Opengl-es 2.0與立方體貼圖的陰影映射
- 26. ThreeJS [r85]:帶陰影貼圖的自定義着色器
- 27. OpenGL方差陰影貼圖倒轉衰減
- 28. GLSL 330點光和陰影貼圖粗糙
- 29. 無法找到適當的陰影貼圖深度偏差?
- 30. 使用延遲渲染(OpenGL)進行陰影貼圖
在第二個畫布上,設置渲染器,使用簡單的片段着色器添加四邊形,用於對紋理進行採樣(您的部門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