저는 장면에서 정의하고있는 클리핑 평면을 고려한 셰이더를 만들려고합니다. 이러한 클리핑 평면은 내가 사용하고있는 '바닐라'모든 자료에 잘 적용됩니다. THREE.MeshLambertMaterial
, THREE.MeshPhongMaterial
및 THREE.MeshPhysicalMaterial
이지만 THREE.ShaderMaterial
에는이 구현이 없습니다. 이 개 큐브, THREE.MeshStandardMaterial
및 THREE.ShaderMaterial
에 의해 정의 된 재료 하나 하나가이 예에서 https://jsfiddle.net/fraguada/27LrLsv5/THREE.ShaderMaterial에 클리핑 추가
이 무슨 뜻인지의 예입니다. THREE.MeshStandardMaterial
클립이 포함 된 큐브가 정상입니다. THREE.ShaderMaterial이있는 큐브가 잘리지 않습니다.
(필자는 jsfiddle에 표시 나는 일반적으로 대신 나는이 유사한 방식으로 그들을 정의하고있어, 스크립트 태그 버텍스/픽셀 쉐이더를 정의하고 있지 않다 :. https://github.com/mrdoob/three.js/blob/dev/examples/js/shaders/BasicShader.js를)
그래서, 몇 질문 :
- THREE.ShaderMaterial에 클리핑 평면이 포함되어 있어야합니까? (클리핑 속성이 있지만 가능한 기능이 확실하지 않습니다.)
- 그렇지 않은 경우 클리핑을 활성화하는 데 필요한 params 및 shader 청크를 포함하도록이 셰이더를 어떻게 수정할 수 있습니까?
고마워요. @neeh, 이것은 내게 약간의 열매가되었습니다. begin_vertex 및 project_vertex 청크가 없습니다. 나는'mvPosition'과 관련된 오류를 계속 지었지만 정의한 덩어리에 대해서는 0이 아니 었습니다. 다시 한 번 감사드립니다! –
감사합니다 !! 이 대답의 가장 중요한 부분은 설정해야 할 속성이 ShaderMaterial에 대해 '클리핑 (clipping)'이라는 것입니다. 다른 재질에는 없습니다. https://threejs.org/docs/#api/materials/ShaderMaterial – taseenb