jfi*_*isk 5 opengl-es-2.0 scenekit metal
试图找出如何在一个看不见的平面上渲染阴影,所以我的背景sceneView显示出来.
THREE.js有一个ShadowMaterial确实如此 - 只渲染阴影.
目前的想法是制作一个看起来很简单的定制金属着色器,但我不确定如何去除地板以显示除阴影之外的所有内容.
以下是影子捕手的示例:https://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/Maya-2015-Shadow-Catching-with-Use-Background-material.html
好的,请查看 Github 上的示例项目:
https://github.com/carolight/Metal-Shadow-Map/blob/master/Shadows/Shader.metal#L67
该链接指向执行阴影贴图测试的着色器。基本上,它标准化正在渲染的片段的 Z 位置并将其与阴影贴图的 Z 缓冲区进行比较。如果它小于阴影 Z,则像素完全照亮(第 67 行),否则它会稍微着色(第 69 行)。
相反,您想要做的是在第 69 行写入 (0,0,0, Shadow_opacity) 并在第 67 行写入 (0,0,0,0)。这应该会发出透明像素。将 Shadow_opacity 设置为 [0.0..1.0] 的统一值。
其余设置如示例所示。将飞机/相机倾斜到所需的设置,如果main pass您真的不想在场景中绘制立方体/花瓶/任何东西,请跳过绘制它(第279行)。(但是,请记下shadow pass并将其保留在那里)。
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |