我们可以在SceneKit中的透明平面上渲染阴影吗?
我用平面着色器修改器,但它不工作。 任何人都可以build议我如何解决它?
let myShaderfragment = "#pragma transparent;\n" + "_output.color.a = 0.0;" let myShaderSurface = "#pragma transparent;\n" + "_surface.diffuse.a = 0.0;" material.shaderModifiers = [SCNShaderModifierEntryPoint.fragment : myShaderfragment, SCNShaderModifierEntryPoint.surface : myShaderSurface]
来自WWDC 2017的SceneKit:What's New会议解释了如何做到这一点。
- 对于飞机,使用具有
constant
的材质作为其lightingModel
。 这是最便宜的一个。 - 这个材质将把
writesToDepthBuffer
设置为true
,colorBufferWriteMask
设置为[]
(空选项设置)。 这样飞机将写入深度缓冲区,但不会在屏幕上绘制任何东西。 - 将光源的
shadowMode
设置为deferred
以便在渲染对象本身时不应用阴影,而是作为最终的后期处理。