Three.js ShaderMaterial着色器:什么是身份(" hello world")顶点和片段代码?

时间:2017-07-25 18:00:40

标签: three.js glsl light shadows

我试图为THREE.js阴影编写自定义着色器,但我是GLSL的新手并且在开始时遇到一些麻烦。我认为最好的方法是从"身份"开始。与默认ShaderMaterial函数产生相同阴影的函数,以及对它们的缓慢破解。但我似乎无法让它发挥作用。以下是我尝试过的内容:

      // vertex function
      void main() {
        gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1 ); 
      }

      // fragment function
      uniform vec3 shadowColor;
      void main() {
        gl_FragColor = vec4(shadowColor, 1);
      }  

uniforms只提供黑色作为阴影颜色:

       uniforms: {
          shadowColor: {
                type: 'c',
                value: new THREE.Color(0x000000)
          }
        },
        vertexShader: vshader,
        fragmentShader: fshader,
        side: THREE.DoubleSide,
        blending: THREE.AdditiveBlending,
        transparent: true
    });

这不会影响阴影,虽然它正确地触发,我知道,因为我可以将gl_FragColor的输出更改为任意HSL值,并看到整个视图用阴影覆盖颜色。很明显,我不理解产生与默认输出相同的正确vertexShader

任何有关身份vertexShader和fragmentShader的帮助都会帮助我轻松使用GLSL。

谢谢!

0 个答案:

没有答案