2017-08-04 22 views
2

我已經使用平面的着色器修改器,但它不工作。任何人都可以建議我如何解決它?我們可以在SceneKit中的透明平面上渲染陰影嗎

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] 
+3

[SceneKit:是否可以在透明對象上投射陰影?](https://stackoverflow.com/questions/30975695/scenekit-is-it-possible-to-cast-an -shadow-上的透明物體) –

回答

6

從WWDC 2017 SceneKit: What's New會議介紹瞭如何做到這一點。

  1. 對於飛機,請使用constant作爲其lightingModel的素材。這是最便宜的一個。
  2. 此資料將有writesToDepthBuffer設置爲truecolorBufferWriteMask設置爲[](空白選項集)。這種方式飛機將寫入深度緩衝區,但不會在屏幕上繪製任何東西。
  3. 將指示燈的shadowMode設置爲deferred,以便在渲染對象本身時不應用陰影,而是作爲最終的後處理。