58 lines
1.3 KiB
Plaintext
58 lines
1.3 KiB
Plaintext
|
#define MATCAP
|
||
|
|
||
|
uniform vec3 diffuse;
|
||
|
uniform float opacity;
|
||
|
uniform sampler2D matcap;
|
||
|
|
||
|
varying vec3 vViewPosition;
|
||
|
|
||
|
#ifndef FLAT_SHADED
|
||
|
|
||
|
varying vec3 vNormal;
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#include <common>
|
||
|
#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 <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
|
||
|
|
||
|
vec4 matcapColor = texture2D( matcap, uv );
|
||
|
|
||
|
matcapColor = matcapTexelToLinear( matcapColor );
|
||
|
|
||
|
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>
|
||
|
|
||
|
}
|