Spaces:
Running
Running
| export const vertex = /* glsl */ ` | |
| #include <common> | |
| #include <uv_pars_vertex> | |
| #include <displacementmap_pars_vertex> | |
| #include <morphtarget_pars_vertex> | |
| #include <skinning_pars_vertex> | |
| #include <logdepthbuf_pars_vertex> | |
| #include <clipping_planes_pars_vertex> | |
| // This is used for computing an equivalent of gl_FragCoord.z that is as high precision as possible. | |
| // Some platforms compute gl_FragCoord at a lower precision which makes the manually computed value better for | |
| // depth-based postprocessing effects. Reproduced on iPad with A10 processor / iPadOS 13.3.1. | |
| varying vec2 vHighPrecisionZW; | |
| void main() { | |
| #include <uv_vertex> | |
| #include <skinbase_vertex> | |
| #ifdef USE_DISPLACEMENTMAP | |
| #include <beginnormal_vertex> | |
| #include <morphnormal_vertex> | |
| #include <skinnormal_vertex> | |
| #endif | |
| #include <begin_vertex> | |
| #include <morphtarget_vertex> | |
| #include <skinning_vertex> | |
| #include <displacementmap_vertex> | |
| #include <project_vertex> | |
| #include <logdepthbuf_vertex> | |
| #include <clipping_planes_vertex> | |
| vHighPrecisionZW = gl_Position.zw; | |
| } | |
| `; | |
| export const fragment = /* glsl */ ` | |
| #if DEPTH_PACKING == 3200 | |
| uniform float opacity; | |
| #endif | |
| #include <common> | |
| #include <packing> | |
| #include <uv_pars_fragment> | |
| #include <map_pars_fragment> | |
| #include <alphamap_pars_fragment> | |
| #include <alphatest_pars_fragment> | |
| #include <logdepthbuf_pars_fragment> | |
| #include <clipping_planes_pars_fragment> | |
| varying vec2 vHighPrecisionZW; | |
| void main() { | |
| #include <clipping_planes_fragment> | |
| vec4 diffuseColor = vec4( 1.0 ); | |
| #if DEPTH_PACKING == 3200 | |
| diffuseColor.a = opacity; | |
| #endif | |
| #include <map_fragment> | |
| #include <alphamap_fragment> | |
| #include <alphatest_fragment> | |
| #include <logdepthbuf_fragment> | |
| // Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values. | |
| float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; | |
| #if DEPTH_PACKING == 3200 | |
| gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); | |
| #elif DEPTH_PACKING == 3201 | |
| gl_FragColor = packDepthToRGBA( fragCoordZ ); | |
| #endif | |
| } | |
| `; | |