試圖弄清楚我如何在無形的平面上渲染陰影,以便我的sceneView
的背景顯示出來。在場景包中的透明地板/平面上顯示陰影
THREE.js有一個ShadowMaterial
正是這樣做 - 只有陰影被渲染。
當前的想法是製作一個看起來很直觀的定製金屬着色器,但我不確定如何去掉地板以顯示除陰影之外的所有東西。
試圖弄清楚我如何在無形的平面上渲染陰影,以便我的sceneView
的背景顯示出來。在場景包中的透明地板/平面上顯示陰影
THREE.js有一個ShadowMaterial
正是這樣做 - 只有陰影被渲染。
當前的想法是製作一個看起來很直觀的定製金屬着色器,但我不確定如何去掉地板以顯示除陰影之外的所有東西。
好了,看看這個例子項目在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]開始的統一。
其餘設置顯示在example中。如果在場景中不需要它(線路279),請將飛機/攝像機傾斜至所需設置,跳過繪製立方體/花瓶/ main pass
中的任何內容。 (但是,請注意shadow pass
並保持在那裏)。
你正在使用什麼樣的陰影?陰影貼圖,影子卷?此外,你目前能夠繪製你的'sceneView' 3d對象嗎? –
使用環境和聚光燈'SNNodes'的dyanmic陰影,不確定蘋果正在做什麼。我能夠將'UIView'放置在我的SceneKit視圖上 – jfisk