UNPKG

@bitowl/three-instanced-mesh

Version:

Scene graph level abstraction for three.js InstancedBufferGeometry

48 lines (47 loc) 1.79 kB
// copy of https://github.com/mrdoob/three.js/blob/dev/src/renderers/shaders/ShaderLib/meshmatcap_frag.glsl.js module.exports = [ "#define MATCAP", "uniform vec3 diffuse;", "uniform float opacity;", "uniform sampler2D matcap;", "varying vec3 vViewPosition;", "#ifndef FLAT_SHADED", " varying vec3 vNormal;", "#endif", "#include <common>", "#include <color_pars_fragment>", "#include <uv_pars_fragment>", "#include <map_pars_fragment>", "#include <alphamap_pars_fragment>", "#include <fog_pars_fragment>", "#include <bumpmap_pars_fragment>", "#include <normalmap_pars_fragment>", "#include <logdepthbuf_pars_fragment>", "#include <clipping_planes_pars_fragment>", "void main() {", " #include <clipping_planes_fragment>", " vec4 diffuseColor = vec4( diffuse, opacity );", " #include <logdepthbuf_fragment>", " #include <map_fragment>", " #include <color_fragment>", " #include <alphamap_fragment>", " #include <alphatest_fragment>", " #include <normal_fragment_begin>", " #include <normal_fragment_maps>", " vec3 viewDir = normalize( vViewPosition );", " vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );", " vec3 y = cross( viewDir, x );", " vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks", " #ifdef USE_MATCAP", " vec4 matcapColor = texture2D( matcap, uv );", " matcapColor = matcapTexelToLinear( matcapColor );", " #else", " vec4 matcapColor = vec4( 1.0 );", " #endif", " vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;", " gl_FragColor = vec4( outgoingLight, diffuseColor.a );", " #include <premultiplied_alpha_fragment>", " #include <tonemapping_fragment>", " #include <encodings_fragment>", " #include <fog_fragment>", "}"].join("\n");