Spaces:
Sleeping
Sleeping
| export const vertex = /* glsl */ ` | |
| #define MATCAP | |
| varying vec3 vViewPosition; | |
| #include <common> | |
| #include <uv_pars_vertex> | |
| #include <color_pars_vertex> | |
| #include <displacementmap_pars_vertex> | |
| #include <fog_pars_vertex> | |
| #include <normal_pars_vertex> | |
| #include <morphtarget_pars_vertex> | |
| #include <skinning_pars_vertex> | |
| #include <logdepthbuf_pars_vertex> | |
| #include <clipping_planes_pars_vertex> | |
| void main() { | |
| #include <uv_vertex> | |
| #include <color_vertex> | |
| #include <beginnormal_vertex> | |
| #include <morphnormal_vertex> | |
| #include <skinbase_vertex> | |
| #include <skinnormal_vertex> | |
| #include <defaultnormal_vertex> | |
| #include <normal_vertex> | |
| #include <begin_vertex> | |
| #include <morphtarget_vertex> | |
| #include <skinning_vertex> | |
| #include <displacementmap_vertex> | |
| #include <project_vertex> | |
| #include <logdepthbuf_vertex> | |
| #include <clipping_planes_vertex> | |
| #include <fog_vertex> | |
| vViewPosition = - mvPosition.xyz; | |
| } | |
| `; | |
| export const fragment = /* glsl */ ` | |
| #define MATCAP | |
| uniform vec3 diffuse; | |
| uniform float opacity; | |
| uniform sampler2D matcap; | |
| varying vec3 vViewPosition; | |
| #include <common> | |
| #include <dithering_pars_fragment> | |
| #include <color_pars_fragment> | |
| #include <uv_pars_fragment> | |
| #include <map_pars_fragment> | |
| #include <alphamap_pars_fragment> | |
| #include <alphatest_pars_fragment> | |
| #include <fog_pars_fragment> | |
| #include <normal_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 ); | |
| #else | |
| vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); // default if matcap is missing | |
| #endif | |
| vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; | |
| #include <output_fragment> | |
| #include <tonemapping_fragment> | |
| #include <encodings_fragment> | |
| #include <fog_fragment> | |
| #include <premultiplied_alpha_fragment> | |
| #include <dithering_fragment> | |
| } | |
| `; | |