Comments (2)
I think we can keep it simple and perturb the normal after #include <normal_fragment_maps>
and after the bump map is applied. The normal will first be changed by the bump map, then the procedural normals. If no bump map is present then they would just be changed procedurally.
If the inbuild preturb function are needed then we can patch out #include <bumpmap_pars_fragment>
with ${THREE.ShaderChunks.bumpmap_pars_fragment}
.
CSM wont inject patch map values if the keyword specified isnt found in the input shader, so, if the user never uses csm_Bump
nothing changes, else both bump map and csm_Bump
are combined.
This is what AO does too, it combines the AO map result with the procedural AO using multiplication.
As far as lighting goes, we wouldnt have to worry as our bump will be placed right under the already existing bump mapping, thus the order of lighting calculations will be unaffected.
Off the top, Here is what the patch map might look like, however this is untested:
csm_Bump: {
"#include <bumpmap_pars_fragment>": THREE.ShaderChunks.bumpmap_pars_fragment, // If using Perturb function from the shader
"#include <normal_fragment_maps>": `
#include <normal_fragment_maps>
normal = somePerturbFunction(normal, csm_Bump);
`
}
somePerturbFunction
can be a custom one defined in src/shaders.ts
too
from three-customshadermaterial.
Released in 5.3.0
from three-customshadermaterial.
Related Issues (20)
- Shaders not working HOT 2
- ERROR: 0:645: 'csm_Normal' undeclared identifier HOT 1
- Override fragment normals? HOT 6
- 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
- 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
- Extended meshBasicMaterial does not have access to cameraPosition uniform 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
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.