以普通情况而论
 
 
	vNormal =  normal;
	//...
	gl_FragColor = vec4(  vNormal, 1. );

	vNormal =  normal;
	//...
	gl_FragColor = vec4( normalize( vNormal ) * 0.5 + 0.5, 1. );

	vNormal = normalMatrix * normal;
	//...
	gl_FragColor = vec4( normalize( vNormal ) * 0.5 + 0.5, 1. );
normalMatrixthreejs会自动传递至uniform

import * as THREE from "three";
export class NormalShaderMaterial extends THREE.ShaderMaterial {
    constructor(params?: ConstructorParameters<typeof THREE.ShaderMaterial>[0]) {
        super({
            uniforms: {},
            vertexShader: /* glsl */ `
                varying vec3 vNormal;
                void main() {
                    vNormal = normalMatrix * normal;
                    vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);
                    gl_Position = projectionMatrix * modelViewPosition;
                }`,
            fragmentShader: /* glsl */ `
                varying vec3 vNormal;               
                void main() {
                    
                    gl_FragColor = vec4( normalize( vNormal ) * 0.5 + 0.5, 1. );
                }`,
        });
    }
}




















