我試圖創建一個着色器,它考慮到了我在場景中定義的裁剪平面。這些裁剪平面適用於我正在使用的所有「香草」材質:THREE.MeshLambertMaterial
,THREE.MeshPhongMaterial
和THREE.MeshPhysicalMaterial
,但THREE.ShaderMaterial
缺少此實現。這是我的意思的一個例子:https://jsfiddle.net/fraguada/27LrLsv5/將裁剪添加到THREE.ShaderMaterial
在這個例子中有兩個立方體,一個是THREE.MeshStandardMaterial
,另一個是由THREE.ShaderMaterial
定義的材質。帶有THREE.MeshStandardMaterial
剪輯的立方體正常。 THREE.ShaderMaterial的立方體不會剪輯。
(我不是一般定義在腳本標記頂點/片段着色器如我在的jsfiddle,而不是我定義它們以類似的方式,以這樣的:https://github.com/mrdoob/three.js/blob/dev/examples/js/shaders/BasicShader.js)
所以,幾問題:
- THREE.ShaderMaterial是否包含開箱即用的剪切平面? (有一個剪輯屬性,但不知道它啓用了什麼)
- 如果不是,我該如何修改該着色器以包含必要的PARAMS和着色器塊以啓用剪切?
謝謝@neeh,這讓我有點瘋狂。我錯過了begin_vertex和project_vertex塊!我不斷收到與'mvPosition'相關的錯誤,但我沒有定義那個塊。再次感謝! –
謝謝!這個答案中最重要的部分是要設置的屬性是ShaderMaterial的'clipping'...不存在於其他材料中。 https://threejs.org/docs/#api/materials/ShaderMaterial – taseenb