Giter Club home page Giter Club logo

Comments (6)

nwpointer avatar nwpointer commented on July 20, 2024

I think I figurered out how to use patchMap for this

from three-customshadermaterial.

FarazzShaikh avatar FarazzShaikh commented on July 20, 2024

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.

nwpointer avatar nwpointer commented on July 20, 2024

ok! will post my solution once I've got it working :)

thanks for confirming this is the way forward.

from three-customshadermaterial.

nwpointer avatar nwpointer commented on July 20, 2024

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.

drone1 avatar drone1 commented on July 20, 2024

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.

drone1 avatar drone1 commented on July 20, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.