Comments (6)
I think I figurered out how to use patchMap for this
from three-customshadermaterial.
Yes patchMaps is the way to go for custom overrides, let me know if you need help with that.
Else let’s close this if you’ve figured it out, also please post the solution if you don’t mind so other can benefit too!
from three-customshadermaterial.
ok! will post my solution once I've got it working :)
thanks for confirming this is the way forward.
from three-customshadermaterial.
ok so here's the hello world for modifying normal maps. This basically is a simplified version of what the default shaders do when you set provide a normalmap img but the user of the CSM is free to replace the logic in Main() with what ever logic they want as long as it assigns a value to csm_NormalMap.
<CustomShaderMaterial
baseMaterial={MeshStandardMaterial}
normalMap={normalTexture}
fragmentShader={glsl`
precision mediump float;
vec3 csm_NormalMap;
void main(){
csm_NormalMap = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
}
`}
patchMap={{
csm_NormalMap: {
"#include <normal_fragment_maps>": glsl`
vec3 mapN = csm_NormalMap;
mapN.xy *= normalScale;
normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );
`,
},
}}
/>
from three-customshadermaterial.
Does one need to do anything special to use perturbNormal2Arb
? I get an error when I try to use this code.
ERROR: 0:1412: 'perturbNormal2Arb' : no matching overloaded function found
Googled around but found nothing. Thanks.
from three-customshadermaterial.
I forgot to comment again here. The issue was that I set normalMap
after first render, which would cause a shader compilation failure. You gotta set normalMap before first render so that all the right #define
's are in place.
from three-customshadermaterial.
Related Issues (20)
- Shaders not working HOT 2
- ERROR: 0:645: 'csm_Normal' undeclared identifier HOT 1
- 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
- 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.