我试图创建一个着色器,它考虑到了我在场景中定义的裁剪平面。这些裁剪平面适用于我正在使用的所有“香草”材质: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