我已经为平面使用了着色器修改器,但它不起作用。任何人都可以建议我如何解决它?
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]
答案 0 :(得分:9)
2017年WWDC的SceneKit: What's New会话解释了如何做到这一点。
constant
作为其lightingModel
的材料。这是最便宜的一个。writesToDepthBuffer
设置为true
,colorBufferWriteMask
设置为[]
(空选项集)。这样,飞机将在深度缓冲区中写入,但不会在屏幕上绘制任何内容。shadowMode
设置为deferred
,以便在渲染对象本身时不会应用阴影,而是作为最终的后期处理。答案 1 :(得分:0)
现在有一个专用的照明模型(SCNLightingModelShadowOnly)仅渲染阴影