123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- export const common_frag_params = `
- uniform int uObjectId;
- uniform int uInstanceCount;
- uniform int uGroupCount;
- uniform int uPickType;
- uniform int uMarkingType;
- #if dClipObjectCount != 0
- uniform int uClipObjectType[dClipObjectCount];
- uniform bool uClipObjectInvert[dClipObjectCount];
- uniform vec3 uClipObjectPosition[dClipObjectCount];
- uniform vec4 uClipObjectRotation[dClipObjectCount];
- uniform vec3 uClipObjectScale[dClipObjectCount];
- #if defined(dClipping)
- #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup)
- varying float vClipping;
- #else
- flat in float vClipping;
- #endif
- #endif
- #endif
- #if defined(dColorMarker)
- uniform vec3 uHighlightColor;
- uniform vec3 uSelectColor;
- uniform float uHighlightStrength;
- uniform float uSelectStrength;
- uniform int uMarkerPriority;
- #endif
- #if defined(dNeedsMarker)
- uniform float uMarker;
- #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup)
- varying float vMarker;
- #else
- flat in float vMarker;
- #endif
- #endif
- varying vec3 vModelPosition;
- varying vec3 vViewPosition;
- uniform vec2 uViewOffset;
- uniform float uNear;
- uniform float uFar;
- uniform float uIsOrtho;
- uniform float uFogNear;
- uniform float uFogFar;
- uniform vec3 uFogColor;
- uniform float uAlpha;
- uniform float uPickingAlphaThreshold;
- uniform bool uTransparentBackground;
- uniform bool uDoubleSided;
- uniform float uInteriorDarkening;
- uniform bool uInteriorColorFlag;
- uniform vec3 uInteriorColor;
- bool interior;
- uniform float uXrayEdgeFalloff;
- uniform mat4 uProjection;
- uniform int uRenderMask;
- uniform bool uMarkingDepthTest;
- uniform sampler2D tDepth;
- uniform vec2 uDrawingBufferSize;
- float getDepthPacked(const in vec2 coords) {
- return unpackRGBAToDepth(texture2D(tDepth, coords));
- }
- float getDepth(const in vec2 coords) {
- #ifdef depthTextureSupport
- return texture2D(tDepth, coords).r;
- #else
- return unpackRGBAToDepth(texture2D(tDepth, coords));
- #endif
- }
- float calcDepth(const in vec3 pos) {
- vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;
- return 0.5 + 0.5 * clipZW.x / clipZW.y;
- }
- // "Bump Mapping Unparametrized Surfaces on the GPU" Morten S. Mikkelsen
- // https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf
- vec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {
- vec3 sigmaS = dFdx(position);
- vec3 sigmaT = dFdy(position);
- vec3 r1 = cross(sigmaT, normal);
- vec3 r2 = cross(normal, sigmaS);
- float det = dot(sigmaS, r1);
- float bs = dFdx(height);
- float bt = dFdy(height);
- vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);
- return normalize(abs(det) * normal - scale * surfGrad);
- }
- float hash(in float h) {
- return fract(sin(h) * 43758.5453123);
- }
- float noise(in vec3 x) {
- vec3 p = floor(x);
- vec3 f = fract(x);
- f = f * f * (3.0 - 2.0 * f);
- float n = p.x + p.y * 157.0 + 113.0 * p.z;
- return mix(
- mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),
- mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),
- mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),
- mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);
- }
- float fbm(in vec3 p) {
- float f = 0.0;
- f += 0.5 * noise(p);
- p *= 2.01;
- f += 0.25 * noise(p);
- p *= 2.02;
- f += 0.125 * noise(p);
- return f;
- }
- `;
|