1

我使用http://stemkoski.github.io/Three.js/动画精灵,阴影,我使用这个着色器

    <script type="x-shader/x-fragment" id="fragmentShaderDepth">
        uniform sampler2D texture;
        varying vec2 vUV;
        vec4 pack_depth( const in float depth ) {
            const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );
            const vec4 bit_mask  = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );
            vec4 res = fract( depth * bit_shift );
            res -= res.xxyz * bit_mask;
            return res;
        }

        void main() {
            vec4 pixel = texture2D( texture, vUV );
            if ( pixel.a < 0.5 ) discard;
            gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );
        }
    </script>

    <script type="x-shader/x-vertex" id="vertexShaderDepth">
        varying vec2 vUV;

        void main() {
            vUV = 0.75 * uv;
            vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
            gl_Position = projectionMatrix * mvPosition;
        }

    </script>

得到一个精灵

    vec2 tailleA = vec2( taillex , tailley);  // 1/22 num sprite horiz  & 1/3 Vert 
    vUV = vec2( tailleA[0] * uv[0] , (tailleA[1] * uv[1]) );

如何从three.js自动生成的着色器中获取纹理的偏移量?如何获得动画阴影?

在此先感谢您的帮助。

4

0 回答 0