Comments (3)
I've looked into it. Unfortunately, the fix is not as simple as just setting isShaderMaterial
to true, being a ShaderMaterial means the WebGLRenderer handles the material differently in terms of creation, disposal and caching. The main issue being that the pre-build shader IDs are hardcoded into the renderer here:
https://github.com/mrdoob/three.js/blob/74939a623cf06ef68b6eb3e2c66f36d127f8bd1a/src/renderers/webgl/WebGLPrograms.js#L20
This means that setting isShaderMaterial
runs some code ment for ShaderMaterial and some code meant for baseMaterial. Reuslting in things breaking.
I think the best thing for CSM is to simply pretend to be its baseMaterial all the way through. It is a shame ThreeJS doesnt have a first class system for material extentions but this is the best were going to get for now.
You can also pass in the uniforms you need manually and use them as needed
from three-customshadermaterial.
Thanks for looking into it @FarazzShaikh. The good news is that there are plenty of workarounds but I wanted to file in case it helped to improve CSM.
Appreciate it!
from three-customshadermaterial.
Appreciate you using it! Glad to look into any possible improvements 😄
from three-customshadermaterial.
Related Issues (20)
- Is it possible to output a normal from a fragment shader? HOT 2
- "Multiple instances of Three.js being imported" issue HOT 3
- Can you disable projection in the vertex shader? HOT 3
- CustomShaderMaterial error HOT 6
- Add csm_Bump? HOT 5
- If the base material has a map, a CSM from it throws an error on three >= 0.151.0 HOT 1
- Shader compilation failure if csm_Feature used is not compatible with base material HOT 2
- Warning: Function copy already exists on CSM, renaming to base_copy HOT 2
- Support macro defines like THREE.ShaderMaterial HOT 1
- Waves example seems to be broken HOT 3
- Problem with using csm_PositionRaw and InstancedMesh HOT 9
- TresJs implementation HOT 2
- How to change the opacity of extended material ? HOT 3
- Couldn't extend `<MeshReflectorMaterial/>` from `drei` HOT 1
- Feature request addition of transmision and thickness maps HOT 1
- Cannot use both csm_DiffuseColor and csm_FragColor in if/else HOT 3
- Extending ShadowMaterial HOT 22
- Accessing csm_FragColor values in if statement causes white rendering HOT 3
- Failed to resolve module specifier "crypto" HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from three-customshadermaterial.