@certe/atmos-renderer 0.8.6 → 0.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@
6
6
  export declare const PBR_FUNCTIONS_WGSL = "\n// GGX/Trowbridge-Reitz normal distribution\nfn distributionGGX(N: vec3<f32>, H: vec3<f32>, roughness: f32) -> f32 {\n let a = roughness * roughness;\n let a2 = a * a;\n let NdotH = max(dot(N, H), 0.0);\n let NdotH2 = NdotH * NdotH;\n let denom = NdotH2 * (a2 - 1.0) + 1.0;\n return a2 / (PI * denom * denom);\n}\n\n// Schlick-GGX geometry function\nfn geometrySchlickGGX(NdotV: f32, roughness: f32) -> f32 {\n let r = roughness + 1.0;\n let k = (r * r) / 8.0;\n return NdotV / (NdotV * (1.0 - k) + k);\n}\n\n// Smith's geometry function\nfn geometrySmith(N: vec3<f32>, V: vec3<f32>, L: vec3<f32>, roughness: f32) -> f32 {\n let NdotV = max(dot(N, V), 0.0);\n let NdotL = max(dot(N, L), 0.0);\n return geometrySchlickGGX(NdotV, roughness) * geometrySchlickGGX(NdotL, roughness);\n}\n\n// Fresnel-Schlick approximation\nfn fresnelSchlick(cosTheta: f32, F0: vec3<f32>) -> vec3<f32> {\n return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0);\n}\n\n// Compute PBR contribution from a single light direction\nfn computePBR(\n N: vec3<f32>, V: vec3<f32>, L: vec3<f32>,\n albedo: vec3<f32>, metallic: f32, roughness: f32,\n F0: vec3<f32>, radiance: vec3<f32>,\n) -> vec3<f32> {\n let H = normalize(V + L);\n let NDF = distributionGGX(N, H, roughness);\n let G = geometrySmith(N, V, L, roughness);\n let F = fresnelSchlick(max(dot(H, V), 0.0), F0);\n\n let numerator = NDF * G * F;\n let denominator = 4.0 * max(dot(N, V), 0.0) * max(dot(N, L), 0.0) + 0.0001;\n let specular = numerator / denominator;\n\n let kS = F;\n let kD = (vec3<f32>(1.0) - kS) * (1.0 - metallic);\n let NdotL = max(dot(N, L), 0.0);\n\n return (kD * albedo / PI + specular) * radiance * NdotL;\n}\n\n// Compute cotangent-frame TBN from screen-space derivatives\nfn computeTBN(worldPos: vec3<f32>, worldNormal: vec3<f32>, uv: vec2<f32>) -> mat3x3<f32> {\n let dp1 = dpdx(worldPos);\n let dp2 = dpdy(worldPos);\n let duv1 = dpdx(uv);\n let duv2 = dpdy(uv);\n let T = normalize(dp1 * duv2.y - dp2 * duv1.y);\n let B = normalize(dp2 * duv1.x - dp1 * duv2.x);\n let N = normalize(worldNormal);\n return mat3x3(T, B, N);\n}\n";
7
7
  /** Light loop WGSL: iterates dir/point/spot lights with PBR + shadow sampling.
8
8
  * Expects: N, V, albedo, metallic, roughness, F0, worldPosition in scope. Writes to Lo. */
9
- export declare const LIGHT_LOOP_WGSL = "\n // Directional lights\n for (var i = 0u; i < scene.numDirLights; i = i + 1u) {\n let light = scene.dirLights[i];\n let L = normalize(-light.direction.xyz);\n let intensity = light.color.w;\n let radiance = light.color.rgb * intensity;\n var contribution = computePBR(N, V, L, albedo, metallic, roughness, F0, radiance);\n let dirSlot = shadow.dirLightToSlot[i];\n if (dirSlot != 0xFFFFFFFFu) {\n contribution = contribution * sampleDirShadow(dirSlot, worldPosition);\n }\n Lo = Lo + contribution;\n }\n\n // Point lights\n for (var i = 0u; i < scene.numPointLights; i = i + 1u) {\n let light = scene.pointLights[i];\n let lightPos = light.position.xyz;\n let range = light.position.w;\n let intensity = light.color.w;\n\n let toLight = lightPos - worldPosition;\n let dist = length(toLight);\n let L = toLight / max(dist, 0.0001);\n\n // Smooth distance attenuation with range cutoff\n let attenuation = max(1.0 - (dist * dist) / (range * range), 0.0);\n let radiance = light.color.rgb * intensity * attenuation * attenuation;\n\n var contribution = computePBR(N, V, L, albedo, metallic, roughness, F0, radiance);\n let pointSlot = shadow.pointLightToSlot[i];\n if (pointSlot != 0xFFFFFFFFu) {\n contribution = contribution * samplePointShadow(pointSlot, worldPosition, N);\n }\n Lo = Lo + contribution;\n }\n\n // Spot lights\n for (var i = 0u; i < scene.numSpotLights; i = i + 1u) {\n let light = scene.spotLights[i];\n let lightPos = light.position.xyz;\n let range = light.position.w;\n let spotDir = light.direction.xyz;\n let outerCos = light.direction.w;\n let innerCos = light.extra.x;\n let intensity = light.color.w;\n\n let toLight = lightPos - worldPosition;\n let dist = length(toLight);\n let L = toLight / max(dist, 0.0001);\n\n // Distance attenuation (same as point light)\n let distAtt = max(1.0 - (dist * dist) / (range * range), 0.0);\n\n // Cone attenuation: smoothstep between outer and inner cosines\n let cosAngle = dot(-L, spotDir);\n let coneAtt = smoothstep(outerCos, innerCos, cosAngle);\n\n let attenuation = distAtt * distAtt * coneAtt;\n let radiance = light.color.rgb * intensity * attenuation;\n\n var contribution = computePBR(N, V, L, albedo, metallic, roughness, F0, radiance);\n let spotSlot = shadow.spotLightToSlot[i];\n if (spotSlot != 0xFFFFFFFFu) {\n contribution = contribution * sampleSpotShadow(spotSlot, worldPosition, N);\n }\n Lo = Lo + contribution;\n }\n";
9
+ export declare const LIGHT_LOOP_WGSL = "\n // Directional lights\n for (var i = 0u; i < scene.numDirLights; i = i + 1u) {\n let light = scene.dirLights[i];\n let L = normalize(-light.direction.xyz);\n let intensity = light.color.w;\n let radiance = light.color.rgb * intensity;\n var contribution = computePBR(N, V, L, albedo, metallic, roughness, F0, radiance);\n let dirSlot = shadow.dirLightToSlot[i];\n if (dirSlot != 0xFFFFFFFFu) {\n contribution = contribution * sampleDirShadow(dirSlot, worldPosition, N);\n }\n Lo = Lo + contribution;\n }\n\n // Point lights\n for (var i = 0u; i < scene.numPointLights; i = i + 1u) {\n let light = scene.pointLights[i];\n let lightPos = light.position.xyz;\n let range = light.position.w;\n let intensity = light.color.w;\n\n let toLight = lightPos - worldPosition;\n let dist = length(toLight);\n let L = toLight / max(dist, 0.0001);\n\n // Smooth distance attenuation with range cutoff\n let attenuation = max(1.0 - (dist * dist) / (range * range), 0.0);\n let radiance = light.color.rgb * intensity * attenuation * attenuation;\n\n var contribution = computePBR(N, V, L, albedo, metallic, roughness, F0, radiance);\n let pointSlot = shadow.pointLightToSlot[i];\n if (pointSlot != 0xFFFFFFFFu) {\n contribution = contribution * samplePointShadow(pointSlot, worldPosition, N);\n }\n Lo = Lo + contribution;\n }\n\n // Spot lights\n for (var i = 0u; i < scene.numSpotLights; i = i + 1u) {\n let light = scene.spotLights[i];\n let lightPos = light.position.xyz;\n let range = light.position.w;\n let spotDir = light.direction.xyz;\n let outerCos = light.direction.w;\n let innerCos = light.extra.x;\n let intensity = light.color.w;\n\n let toLight = lightPos - worldPosition;\n let dist = length(toLight);\n let L = toLight / max(dist, 0.0001);\n\n // Distance attenuation (same as point light)\n let distAtt = max(1.0 - (dist * dist) / (range * range), 0.0);\n\n // Cone attenuation: smoothstep between outer and inner cosines\n let cosAngle = dot(-L, spotDir);\n let coneAtt = smoothstep(outerCos, innerCos, cosAngle);\n\n let attenuation = distAtt * distAtt * coneAtt;\n let radiance = light.color.rgb * intensity * attenuation;\n\n var contribution = computePBR(N, V, L, albedo, metallic, roughness, F0, radiance);\n let spotSlot = shadow.spotLightToSlot[i];\n if (spotSlot != 0xFFFFFFFFu) {\n contribution = contribution * sampleSpotShadow(spotSlot, worldPosition, N);\n }\n Lo = Lo + contribution;\n }\n";
10
10
  /** Fog calculation WGSL. Expects: scene, worldPosition, color in scope. Modifies color. */
11
11
  export declare const FOG_WGSL = "\n // Distance fog\n if (scene.fogEnabled != 0u) {\n let fogDist = length(scene.cameraPos.xyz - worldPosition);\n var fogFactor: f32;\n if (scene.fogMode == 0u) {\n // Linear\n fogFactor = saturate((scene.fogEnd - fogDist) / (scene.fogEnd - scene.fogStart));\n } else {\n // Exponential\u00B2\n let d = scene.fogDensity * fogDist;\n fogFactor = exp(-(d * d));\n }\n color = mix(scene.fogColor.rgb, color, fogFactor);\n }\n";
12
12
  //# sourceMappingURL=pbr-wgsl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pbr-wgsl.d.ts","sourceRoot":"","sources":["../src/pbr-wgsl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,2lEA+D9B,CAAC;AAEF;4FAC4F;AAC5F,eAAO,MAAM,eAAe,8gFAqE3B,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,QAAQ,ydAepB,CAAC"}
1
+ {"version":3,"file":"pbr-wgsl.d.ts","sourceRoot":"","sources":["../src/pbr-wgsl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,2lEA+D9B,CAAC;AAEF;4FAC4F;AAC5F,eAAO,MAAM,eAAe,ihFAqE3B,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,QAAQ,ydAepB,CAAC"}
package/dist/pbr-wgsl.js CHANGED
@@ -79,7 +79,7 @@ export const LIGHT_LOOP_WGSL = /* wgsl */ `
79
79
  var contribution = computePBR(N, V, L, albedo, metallic, roughness, F0, radiance);
80
80
  let dirSlot = shadow.dirLightToSlot[i];
81
81
  if (dirSlot != 0xFFFFFFFFu) {
82
- contribution = contribution * sampleDirShadow(dirSlot, worldPosition);
82
+ contribution = contribution * sampleDirShadow(dirSlot, worldPosition, N);
83
83
  }
84
84
  Lo = Lo + contribution;
85
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shadow-fragment-wgsl.d.ts","sourceRoot":"","sources":["../src/shadow-fragment-wgsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA2NH,eAAO,MAAM,oBAAoB,QAAmB,CAAC"}
1
+ {"version":3,"file":"shadow-fragment-wgsl.d.ts","sourceRoot":"","sources":["../src/shadow-fragment-wgsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8OH,eAAO,MAAM,oBAAoB,QAAmB,CAAC"}
@@ -17,13 +17,21 @@ const MAX_SPOT_SHADOW_SLOTS = 4;
17
17
  function genDirPcf(slot, cascade) {
18
18
  const tex = `dirCascade${cascade}_${slot}`;
19
19
  const vpField = cascade === 0 ? 'cascade0VP' : 'cascade1VP';
20
- return `fn _pcfDir${cascade}S${slot}(worldPos: vec3<f32>) -> f32 {
20
+ const orthoField = cascade === 0 ? 'orthoSize0' : 'orthoSize1';
21
+ return `fn _pcfDir${cascade}S${slot}(worldPos: vec3<f32>, N: vec3<f32>) -> f32 {
21
22
  let s = shadow.dirSlots[${slot}];
22
- let clip = s.${vpField} * vec4(worldPos, 1.0);
23
+ // Normal offset: push sample point along surface normal to prevent acne
24
+ let res = f32(textureDimensions(${tex}, 0).x);
25
+ let texelWorld = s.${orthoField} / res;
26
+ let lightDir = normalize(vec3(s.lightDirX, s.lightDirY, s.lightDirZ));
27
+ let cosTheta = abs(dot(N, -lightDir));
28
+ let normalOffset = N * texelWorld * max(1.0 - cosTheta, 0.1);
29
+ let offsetPos = worldPos + normalOffset;
30
+ let clip = s.${vpField} * vec4(offsetPos, 1.0);
23
31
  let ndc = clip.xyz / clip.w;
24
32
  let uv = ndc.xy * vec2(0.5, -0.5) + 0.5;
25
33
  let depth = ndc.z - s.bias;
26
- let texelSize = 1.0 / f32(textureDimensions(${tex}, 0).x);
34
+ let texelSize = 1.0 / res;
27
35
  var vis = 0.0;
28
36
  for (var y: i32 = -1; y <= 1; y++) { for (var x: i32 = -1; x <= 1; x++) {
29
37
  vis += textureSampleCompare(${tex}, shadowSampler, uv + vec2(f32(x), f32(y)) * texelSize, depth);
@@ -32,10 +40,10 @@ function genDirPcf(slot, cascade) {
32
40
  }`;
33
41
  }
34
42
  function genDirSlot(slot) {
35
- return `fn _sampleDirSlot${slot}(worldPos: vec3<f32>) -> f32 {
43
+ return `fn _sampleDirSlot${slot}(worldPos: vec3<f32>, N: vec3<f32>) -> f32 {
36
44
  let s = shadow.dirSlots[${slot}];
37
- let vis0 = _pcfDir0S${slot}(worldPos);
38
- let vis1 = _pcfDir1S${slot}(worldPos);
45
+ let vis0 = _pcfDir0S${slot}(worldPos, N);
46
+ let vis1 = _pcfDir1S${slot}(worldPos, N);
39
47
  let uv0 = _cascadeUV(worldPos, s.cascade0VP);
40
48
  let c0xy = _cascadeCoverageXY(uv0.xy, 0.05);
41
49
  let c0z = smoothstep(0.0, 0.02, uv0.z) * smoothstep(0.0, 0.02, 1.0 - uv0.z);
@@ -54,17 +62,24 @@ function genPointSlot(slot) {
54
62
  const tex = `pointCubeMap${slot}`;
55
63
  return `fn _samplePointSlot${slot}(worldPos: vec3<f32>, N: vec3<f32>) -> f32 {
56
64
  let s = shadow.pointSlots[${slot}];
57
- let toFrag = worldPos - s.posAndFar.xyz;
58
- let dist = length(toFrag);
65
+ let toFragRaw = worldPos - s.posAndFar.xyz;
66
+ let distRaw = length(toFragRaw);
59
67
  let far = s.posAndFar.w;
60
- let lightDir = toFrag / max(dist, 0.0001);
68
+ let lightDir = toFragRaw / max(distRaw, 0.0001);
61
69
  let cosTheta = abs(dot(lightDir, N));
70
+ // Normal offset: push sample point along surface normal to prevent acne
71
+ let res = f32(textureDimensions(${tex}, 0).x);
72
+ let texelWorld = distRaw * 2.0 / res;
73
+ let normalOffset = N * texelWorld * max(1.0 - cosTheta, 0.1);
74
+ let offsetPos = worldPos + normalOffset;
75
+ let toFrag = offsetPos - s.posAndFar.xyz;
76
+ let dist = length(toFrag);
62
77
  let bias = s.bias * max(1.0, 2.0 / max(cosTheta, 0.05));
63
78
  let refDepth = dist / far - bias;
64
79
  let vis = textureSampleCompare(${tex}, shadowSampler, toFrag, refDepth);
65
80
  let adjusted = mix(1.0, vis, s.intensity);
66
81
  let enabled = s.enabled != 0u;
67
- let inRange = dist < far;
82
+ let inRange = distRaw < far;
68
83
  return select(1.0, adjusted, enabled && inRange);
69
84
  }`;
70
85
  }
@@ -108,9 +123,13 @@ struct DirShadowSlot {
108
123
  intensity: f32,
109
124
  cascadeSplit: f32,
110
125
  blendWidth: f32,
126
+ orthoSize0: f32,
127
+ orthoSize1: f32,
128
+ lightDirX: f32,
129
+ lightDirY: f32,
130
+ lightDirZ: f32,
111
131
  _pad0: f32,
112
132
  _pad1: f32,
113
- _pad2: f32,
114
133
  };
115
134
 
116
135
  struct PointShadowSlot {
@@ -184,10 +203,10 @@ for (let s = 0; s < MAX_SPOT_SHADOW_SLOTS; s++) {
184
203
  }
185
204
  // Dispatch functions
186
205
  parts.push(`
187
- fn sampleDirShadow(slot: u32, worldPos: vec3<f32>) -> f32 {
206
+ fn sampleDirShadow(slot: u32, worldPos: vec3<f32>, N: vec3<f32>) -> f32 {
188
207
  switch(slot) {
189
- case 0u: { return _sampleDirSlot0(worldPos); }
190
- case 1u: { return _sampleDirSlot1(worldPos); }
208
+ case 0u: { return _sampleDirSlot0(worldPos, N); }
209
+ case 1u: { return _sampleDirSlot1(worldPos, N); }
191
210
  default: { return 1.0; }
192
211
  }
193
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shadow-fragment-wgsl.js","sourceRoot":"","sources":["../src/shadow-fragment-wgsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uEAAuE;AAEvE,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,uEAAuE;AAEvE,SAAS,SAAS,CAAC,IAAY,EAAE,OAAc;IAC7C,MAAM,GAAG,GAAG,aAAa,OAAO,IAAI,IAAI,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAC5D,OAAO,aAAa,OAAO,IAAI,IAAI;4BACT,IAAI;iBACf,OAAO;;;;gDAIwB,GAAG;;;kCAGjB,GAAG;;;EAGnC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,oBAAoB,IAAI;4BACL,IAAI;wBACR,IAAI;wBACJ,IAAI;;;;;;;;;;;;;EAa1B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,eAAe,IAAI,EAAE,CAAC;IAClC,OAAO,sBAAsB,IAAI;8BACL,IAAI;;;;;;;;mCAQC,GAAG;;;;;EAKpC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,eAAe,IAAI,EAAE,CAAC;IAClC,OAAO,qBAAqB,IAAI;6BACL,IAAI;;;;;;oCAMG,GAAG;;;;;;;;;gDASS,GAAG;;;kCAGjB,GAAG;;;;;EAKnC,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE,MAAM,KAAK,GAAa,EAAE,CAAC;AAE3B,UAAU;AACV,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCV,CAAC,CAAC;AAEH,qBAAqB;AACrB,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;CAaV,CAAC,CAAC;AAEH,iBAAiB;AACjB,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;CAYV,CAAC,CAAC;AAEH,2BAA2B;AAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,iBAAiB;AACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,gBAAgB;AAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,qBAAqB;AACrB,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"shadow-fragment-wgsl.js","sourceRoot":"","sources":["../src/shadow-fragment-wgsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uEAAuE;AAEvE,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,uEAAuE;AAEvE,SAAS,SAAS,CAAC,IAAY,EAAE,OAAc;IAC7C,MAAM,GAAG,GAAG,aAAa,OAAO,IAAI,IAAI,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAC5D,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/D,OAAO,aAAa,OAAO,IAAI,IAAI;4BACT,IAAI;;oCAEI,GAAG;uBAChB,UAAU;;;;;iBAKhB,OAAO;;;;;;;kCAOU,GAAG;;;EAGnC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,oBAAoB,IAAI;4BACL,IAAI;wBACR,IAAI;wBACJ,IAAI;;;;;;;;;;;;;EAa1B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,eAAe,IAAI,EAAE,CAAC;IAClC,OAAO,sBAAsB,IAAI;8BACL,IAAI;;;;;;;oCAOE,GAAG;;;;;;;;mCAQJ,GAAG;;;;;EAKpC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,eAAe,IAAI,EAAE,CAAC;IAClC,OAAO,qBAAqB,IAAI;6BACL,IAAI;;;;;;oCAMG,GAAG;;;;;;;;;gDASS,GAAG;;;kCAGjB,GAAG;;;;;EAKnC,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE,MAAM,KAAK,GAAa,EAAE,CAAC;AAE3B,UAAU;AACV,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CV,CAAC,CAAC;AAEH,qBAAqB;AACrB,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;CAaV,CAAC,CAAC;AAEH,iBAAiB;AACjB,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;CAYV,CAAC,CAAC;AAEH,2BAA2B;AAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,iBAAiB;AACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,gBAAgB;AAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,qBAAqB;AACrB,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shadow-manager.d.ts","sourceRoot":"","sources":["../src/shadow-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAY1D,MAAM,WAAW,mBAAmB;IAAG,SAAS,EAAE,YAAY,CAAC;CAAE;AAYjE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,WAAW,CAAuD;IAC1E,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IACrE,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkD;IAClF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiF;IACzG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiF;gBAE7F,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB;IAM3F,MAAM,CACJ,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EACjE,WAAW,EAAE,cAAc,EAC3B,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC,GAAG,SAAS,EAC7D,gBAAgB,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAChH,mBAAmB;IAmBtB,yEAAyE;IACzE,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,cAAc;IAsDtB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,eAAe;IAqBvB,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"shadow-manager.d.ts","sourceRoot":"","sources":["../src/shadow-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAY1D,MAAM,WAAW,mBAAmB;IAAG,SAAS,EAAE,YAAY,CAAC;CAAE;AAajE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,WAAW,CAAuD;IAC1E,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IACrE,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkD;IAClF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiF;IACzG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiF;gBAE7F,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB;IAM3F,MAAM,CACJ,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EACjE,WAAW,EAAE,cAAc,EAC3B,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC,GAAG,SAAS,EAC7D,gBAAgB,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAChH,mBAAmB;IAmBtB,yEAAyE;IACzE,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,cAAc;IA4DtB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,eAAe;IAqBvB,OAAO,IAAI,IAAI;CAMhB"}
@@ -9,6 +9,7 @@ import { SpotShadowPass } from './spot-shadow-pass.js';
9
9
  import { SHADOW_UNIFORM_SIZE, MAX_DIR_SHADOW_SLOTS, MAX_POINT_SHADOW_SLOTS, MAX_SPOT_SHADOW_SLOTS, SHADOW_SLOT_NONE, createDummyShadowResources, } from './shadow-uniforms.js';
10
10
  const _posScratch = new Float32Array(3);
11
11
  const _spotDirScratch = new Float32Array(3);
12
+ const _dirLightDirScratch = new Float32Array(3);
12
13
  const _pointCandidates = [];
13
14
  const _spotCandidates = [];
14
15
  const _dirCandidates = [];
@@ -151,12 +152,12 @@ export class ShadowManager {
151
152
  const f32 = new Float32Array(this._uniformData);
152
153
  const u32 = new Uint32Array(this._uniformData);
153
154
  f32.fill(0);
154
- // DirShadowSlot[2]: offset 0, 160B each = 40 floats each
155
+ // DirShadowSlot[2]: offset 0, 176B each = 44 floats each
155
156
  for (let i = 0; i < MAX_DIR_SHADOW_SLOTS; i++) {
156
157
  const dl = dirSlots[i];
157
158
  if (!dl)
158
159
  continue;
159
- const b = i * 40;
160
+ const b = i * 44;
160
161
  f32.set(this._dirVP0[i], b);
161
162
  f32.set(this._dirVP1[i], b + 16);
162
163
  f32[b + 32] = 0.002;
@@ -164,13 +165,19 @@ export class ShadowManager {
164
165
  f32[b + 34] = dl.shadowIntensity;
165
166
  f32[b + 35] = dl.shadowSize * 0.9;
166
167
  f32[b + 36] = dl.shadowSize * 0.3;
168
+ f32[b + 37] = dl.shadowSize * 2.0; // orthoSize0 (cascade 0 world width)
169
+ f32[b + 38] = dl.shadowFarSize * 2.0; // orthoSize1 (cascade 1 world width)
170
+ dl.getWorldDirection(_dirLightDirScratch);
171
+ f32[b + 39] = _dirLightDirScratch[0]; // lightDirX
172
+ f32[b + 40] = _dirLightDirScratch[1]; // lightDirY
173
+ f32[b + 41] = _dirLightDirScratch[2]; // lightDirZ
167
174
  }
168
- // PointShadowSlot[2]: offset 320B = 80 floats, 32B each = 8 floats each
175
+ // PointShadowSlot[2]: offset 352B = 88 floats, 32B each = 8 floats each
169
176
  for (let i = 0; i < MAX_POINT_SHADOW_SLOTS; i++) {
170
177
  const pl = pointSlots[i];
171
178
  if (!pl)
172
179
  continue;
173
- const b = 80 + i * 8;
180
+ const b = 88 + i * 8;
174
181
  pl.getWorldPosition(_posScratch);
175
182
  f32[b] = _posScratch[0];
176
183
  f32[b + 1] = _posScratch[1];
@@ -180,12 +187,12 @@ export class ShadowManager {
180
187
  u32[b + 5] = 1;
181
188
  f32[b + 6] = pl.shadowIntensity;
182
189
  }
183
- // SpotShadowSlot[4]: offset 384B = 96 floats, 96B each = 24 floats each
190
+ // SpotShadowSlot[4]: offset 416B = 104 floats, 96B each = 24 floats each
184
191
  for (let i = 0; i < MAX_SPOT_SHADOW_SLOTS; i++) {
185
192
  const sl = spotSlots[i];
186
193
  if (!sl)
187
194
  continue;
188
- const b = 96 + i * 24;
195
+ const b = 104 + i * 24;
189
196
  const pass = this._spotPasses[i];
190
197
  if (pass)
191
198
  f32.set(pass.getViewProjection(), b);
@@ -198,8 +205,8 @@ export class ShadowManager {
198
205
  u32[b + 21] = 1;
199
206
  f32[b + 22] = sl.shadowIntensity;
200
207
  }
201
- // Light-to-slot maps: offset 768B = float index 192
202
- const m = 192;
208
+ // Light-to-slot maps: offset 800B = float index 200
209
+ const m = 200;
203
210
  for (let i = 0; i < 12; i++)
204
211
  u32[m + i] = SHADOW_SLOT_NONE;
205
212
  this._writeSlotMap(u32, m, dirSlots, sceneLights.dirComponents, sceneLights.dirCount, MAX_DIR_SHADOW_SLOTS);
@@ -1 +1 @@
1
- {"version":3,"file":"shadow-manager.js","sourceRoot":"","sources":["../src/shadow-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shadow-manager.js","sourceRoot":"","sources":["../src/shadow-manager.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Shadow mapping shared constants and bind group layout factories.
3
3
  *
4
4
  * Group 2 layout (main pass) — 12 bindings, 10 sampled textures:
5
- * binding 0: uniform buffer (816 bytes)
5
+ * binding 0: uniform buffer (848 bytes)
6
6
  * binding 1: comparison sampler
7
7
  * binding 2–3: dir cascade 0 depth maps (slots 0–1)
8
8
  * binding 4–5: dir cascade 1 depth maps (slots 0–1)
@@ -12,15 +12,15 @@
12
12
  * Combined with group 1's 3 material textures = 13 per-stage sampled textures
13
13
  * (WebGPU maxSampledTexturesPerShaderStage limit is 16).
14
14
  *
15
- * Uniform layout (816 bytes):
16
- * 0–319 DirShadowSlot[2] (160B each)
17
- * 320383 PointShadowSlot[2] (32B each)
18
- * 384767 SpotShadowSlot[4] (96B each)
19
- * 768783 dirLightToSlot vec4<u32>
20
- * 784799 pointLightToSlot vec4<u32>
21
- * 800815 spotLightToSlot vec4<u32>
15
+ * Uniform layout (848 bytes):
16
+ * 0–351 DirShadowSlot[2] (176B each)
17
+ * 352415 PointShadowSlot[2] (32B each)
18
+ * 416799 SpotShadowSlot[4] (96B each)
19
+ * 800815 dirLightToSlot vec4<u32>
20
+ * 816831 pointLightToSlot vec4<u32>
21
+ * 832847 spotLightToSlot vec4<u32>
22
22
  */
23
- export declare const SHADOW_UNIFORM_SIZE = 816;
23
+ export declare const SHADOW_UNIFORM_SIZE = 848;
24
24
  export declare const MAX_DIR_SHADOW_SLOTS = 2;
25
25
  export declare const MAX_POINT_SHADOW_SLOTS = 2;
26
26
  export declare const MAX_SPOT_SHADOW_SLOTS = 4;
@@ -2,7 +2,7 @@
2
2
  * Shadow mapping shared constants and bind group layout factories.
3
3
  *
4
4
  * Group 2 layout (main pass) — 12 bindings, 10 sampled textures:
5
- * binding 0: uniform buffer (816 bytes)
5
+ * binding 0: uniform buffer (848 bytes)
6
6
  * binding 1: comparison sampler
7
7
  * binding 2–3: dir cascade 0 depth maps (slots 0–1)
8
8
  * binding 4–5: dir cascade 1 depth maps (slots 0–1)
@@ -12,15 +12,15 @@
12
12
  * Combined with group 1's 3 material textures = 13 per-stage sampled textures
13
13
  * (WebGPU maxSampledTexturesPerShaderStage limit is 16).
14
14
  *
15
- * Uniform layout (816 bytes):
16
- * 0–319 DirShadowSlot[2] (160B each)
17
- * 320383 PointShadowSlot[2] (32B each)
18
- * 384767 SpotShadowSlot[4] (96B each)
19
- * 768783 dirLightToSlot vec4<u32>
20
- * 784799 pointLightToSlot vec4<u32>
21
- * 800815 spotLightToSlot vec4<u32>
15
+ * Uniform layout (848 bytes):
16
+ * 0–351 DirShadowSlot[2] (176B each)
17
+ * 352415 PointShadowSlot[2] (32B each)
18
+ * 416799 SpotShadowSlot[4] (96B each)
19
+ * 800815 dirLightToSlot vec4<u32>
20
+ * 816831 pointLightToSlot vec4<u32>
21
+ * 832847 spotLightToSlot vec4<u32>
22
22
  */
23
- export const SHADOW_UNIFORM_SIZE = 816;
23
+ export const SHADOW_UNIFORM_SIZE = 848;
24
24
  export const MAX_DIR_SHADOW_SLOTS = 2;
25
25
  export const MAX_POINT_SHADOW_SLOTS = 2;
26
26
  export const MAX_SPOT_SHADOW_SLOTS = 4;
@@ -58,7 +58,7 @@ export function createDummyShadowResources(device, layout) {
58
58
  const data = new ArrayBuffer(SHADOW_UNIFORM_SIZE);
59
59
  const u32 = new Uint32Array(data);
60
60
  // Set slot maps to sentinel (no shadow)
61
- const mapOffset32 = 768 / 4;
61
+ const mapOffset32 = 800 / 4;
62
62
  for (let i = 0; i < 12; i++)
63
63
  u32[mapOffset32 + i] = SHADOW_SLOT_NONE;
64
64
  device.queue.writeBuffer(uniformBuffer, 0, data);
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Screen-Space Ambient Occlusion pass.
3
- * 1. Compute noisy AO at half resolution from depth buffer
3
+ * 1. Compute noisy AO at full resolution from depth buffer
4
4
  * 2. Blur the result with a 4x4 box filter
5
- * Output: blurred AO texture view (r8unorm, half-res)
5
+ * Output: blurred AO texture view (r16float, full-res)
6
6
  */
7
7
  import type { Mat4Type } from '@certe/atmos-math';
8
8
  export declare class SSAOPass {
@@ -1 +1 @@
1
- {"version":3,"file":"ssao-pass.d.ts","sourceRoot":"","sources":["../src/ssao-pass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAOlD,qBAAa,QAAQ;IACnB,MAAM,SAAO;IACb,IAAI,SAAS;IACb,SAAS,SAAO;IAChB,OAAO,UAAQ;IAEf,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAE3C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IAGpB,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,UAAU,CAAiB;gBAEvB,MAAM,EAAE,SAAS;IAgG7B,OAAO,CAAC,eAAe;IAuBvB,6EAA6E;IAC7E,OAAO,CACL,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,QAAQ,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,cAAc;IA+DjB,OAAO,IAAI,IAAI;CAOhB"}
1
+ {"version":3,"file":"ssao-pass.d.ts","sourceRoot":"","sources":["../src/ssao-pass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAOlD,qBAAa,QAAQ;IACnB,MAAM,SAAO;IACb,IAAI,SAAS;IACb,SAAS,SAAO;IAChB,OAAO,UAAQ;IAEf,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAE3C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IAGpB,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,UAAU,CAAiB;gBAEvB,MAAM,EAAE,SAAS;IAiG7B,OAAO,CAAC,eAAe;IAuBvB,6EAA6E;IAC7E,OAAO,CACL,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,QAAQ,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,cAAc;IA+DjB,OAAO,IAAI,IAAI;CAOhB"}
package/dist/ssao-pass.js CHANGED
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Screen-Space Ambient Occlusion pass.
3
- * 1. Compute noisy AO at half resolution from depth buffer
3
+ * 1. Compute noisy AO at full resolution from depth buffer
4
4
  * 2. Blur the result with a 4x4 box filter
5
- * Output: blurred AO texture view (r8unorm, half-res)
5
+ * Output: blurred AO texture view (r16float, full-res)
6
6
  */
7
7
  import { SSAO_SHADER, SSAO_BLUR_SHADER, SSAO_KERNEL_SIZE } from './ssao-shader.js';
8
8
  import { drawFullscreenTriangle } from './fullscreen-quad.js';
9
- const AO_FORMAT = 'r8unorm';
9
+ const AO_FORMAT = 'r16float';
10
10
  /** SSAO uniform layout: invProj(64) + proj(64) + radius(4) + bias(4) + intensity(4) + pad(4) + kernel(256) = 400 */
11
11
  const PARAMS_SIZE = 400;
12
12
  export class SSAOPass {
@@ -117,16 +117,17 @@ export class SSAOPass {
117
117
  size: [1, 1], format: AO_FORMAT,
118
118
  usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,
119
119
  });
120
- device.queue.writeTexture({ texture: this._whiteTexture }, new Uint8Array([255]), { bytesPerRow: 1 }, [1, 1]);
120
+ // Float16 encoding of 1.0 = 0x3C00
121
+ device.queue.writeTexture({ texture: this._whiteTexture }, new Uint16Array([0x3C00]), { bytesPerRow: 2 }, [1, 1]);
121
122
  this._whiteView = this._whiteTexture.createView();
122
123
  }
123
124
  _ensureTextures(w, h) {
124
- const hw = Math.max(1, Math.floor(w / 2));
125
- const hh = Math.max(1, Math.floor(h / 2));
126
- if (this._width === hw && this._height === hh)
125
+ if (this._width === w && this._height === h)
127
126
  return;
128
- this._width = hw;
129
- this._height = hh;
127
+ this._width = w;
128
+ this._height = h;
129
+ const hw = w;
130
+ const hh = h;
130
131
  this._aoTexture?.destroy();
131
132
  this._blurTexture?.destroy();
132
133
  this._aoTexture = this._device.createTexture({
@@ -1 +1 @@
1
- {"version":3,"file":"ssao-pass.js","sourceRoot":"","sources":["../src/ssao-pass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ssao-pass.js","sourceRoot":"","sources":["../src/ssao-pass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,SAAS,GAAqB,UAAU,CAAC;AAE/C,oHAAoH;AACpH,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,OAAO,QAAQ;IACnB,MAAM,GAAG,GAAG,CAAC;IACb,IAAI,GAAG,KAAK,CAAC;IACb,SAAS,GAAG,GAAG,CAAC;IAChB,OAAO,GAAG,IAAI,CAAC;IAEE,OAAO,CAAY;IACnB,aAAa,CAAoB;IACjC,aAAa,CAAoB;IACjC,QAAQ,CAAqB;IAC7B,QAAQ,CAAqB;IAC7B,aAAa,CAAY;IACzB,aAAa,CAAmB;IAChC,cAAc,CAAa;IAC3B,OAAO,CAAe;IACtB,WAAW,CAAe;IAEnC,UAAU,GAAsB,IAAI,CAAC;IACrC,OAAO,GAA0B,IAAI,CAAC;IACtC,YAAY,GAAsB,IAAI,CAAC;IACvC,SAAS,GAA0B,IAAI,CAAC;IACxC,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAG,CAAC,CAAC;IAEpB,qDAAqD;IAC7C,aAAa,CAAa;IAC1B,UAAU,CAAiB;IAEnC,YAAY,MAAiB;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,6BAA6B;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,6BAA6B;YAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,qBAAqB;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC,IAAI,GAAG,CAAC;YAAC,CAAC,IAAI,GAAG,CAAC;YAAC,CAAC,IAAI,GAAG,CAAC;YAC7B,0DAA0D;YAC1D,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC;YACvC,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACnE,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACvE,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAC7B,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;YACpC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC,QAAQ;SAClE,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAuC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvH,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;YACxC,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,QAAQ;YACtB,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAE/F,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEzF,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;YACvC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SACxD,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC;YAC3C,OAAO,EAAE;gBACP,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;gBACrF,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;gBACrF,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;gBACnF,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;aACjF;SACF,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC;YAC3C,OAAO,EAAE;gBACP,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;gBACrF,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;aACpF;SACF,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC/C,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1E,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;YAChD,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;YACpF,SAAS,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;SACzC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC/C,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1E,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;YAChD,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;YACpF,SAAS,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;SACzC,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YACxC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS;YAC/B,KAAK,EAAE,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC,QAAQ;SAClE,CAAC,CAAC;QACH,mCAAmC;QACnC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,WAAW,CAAC,CAAC,MAAM,CAAC,CAA+B,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IACpD,CAAC;IAEO,eAAe,CAAC,CAAS,EAAE,CAAS;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO;QACpD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,CAAC,CAAC;QAEb,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QAE7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC3C,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS;YAClD,KAAK,EAAE,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC,iBAAiB;SAC3E,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAE5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7C,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS;YAClD,KAAK,EAAE,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC,iBAAiB;SAC3E,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IAClD,CAAC;IAED,6EAA6E;IAC7E,OAAO,CACL,OAA0B,EAC1B,SAAgC,EAChC,UAAoB,EACpB,aAAuB,EACvB,OAAe,EACf,OAAe;QAEf,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAExD,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvC,kEAAkE;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,aAA6B,EAAE,CAAC,CAAC,CAAC,CAAG,oBAAoB;QAClE,IAAI,CAAC,GAAG,CAAC,UAA0B,EAAE,EAAE,CAAC,CAAC,CAAM,kBAAkB;QACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAoB,wBAAwB;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAkC,CAAC,CAAC;QAE1F,YAAY;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,OAAO,EAAE;gBACP,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE;gBACnC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBACjD,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBACpD,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE;aACzD;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;YACvC,gBAAgB,EAAE,CAAC;oBACjB,IAAI,EAAE,IAAI,CAAC,OAAQ;oBACnB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;oBACjC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;iBACvC,CAAC;SACH,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACjC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACjC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEf,YAAY;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,OAAO,EAAE;gBACP,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAQ,EAAE;gBACvC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;aAC9C;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;YACvC,gBAAgB,EAAE,CAAC;oBACjB,IAAI,EAAE,IAAI,CAAC,SAAU;oBACrB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;oBACjC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;iBACvC,CAAC;SACH,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACjC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACjC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEf,OAAO,IAAI,CAAC,SAAU,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACvC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tonemap-pass.d.ts","sourceRoot":"","sources":["../src/tonemap-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmDH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB;IAgC7D,OAAO,CACL,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,cAAc,EAC1B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,cAAc,EAAE,MAAM,GACrB,IAAI;IAgCP,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"tonemap-pass.d.ts","sourceRoot":"","sources":["../src/tonemap-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgEH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB;IAgC7D,OAAO,CACL,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,cAAc,EAC1B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,cAAc,EAAE,MAAM,GACrB,IAAI;IAgCP,OAAO,IAAI,IAAI;CAGhB"}
@@ -26,6 +26,16 @@ fn ACESFilmic(x: vec3<f32>) -> vec3<f32> {
26
26
  return clamp((x * (a * x + b)) / (x * (c * x + d) + e), vec3(0.0), vec3(1.0));
27
27
  }
28
28
 
29
+ // Triangular-PDF dithering to break 8-bit color banding
30
+ fn dither(uv: vec2<f32>) -> vec3<f32> {
31
+ let pixel = uv * vec2<f32>(textureDimensions(hdrTexture, 0));
32
+ // Hash-based noise: two independent uniform values
33
+ let n1 = fract(sin(dot(pixel, vec2(12.9898, 78.233))) * 43758.5453);
34
+ let n2 = fract(sin(dot(pixel, vec2(63.7264, 10.873))) * 28627.3196);
35
+ // Triangular distribution: uniform1 + uniform2 - 1.0 → range [-1, 1], peak at 0
36
+ return vec3((n1 + n2 - 1.0) / 255.0);
37
+ }
38
+
29
39
  @fragment
30
40
  fn fs(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
31
41
  let hdr = textureSample(hdrTexture, texSampler, uv).rgb;
@@ -52,6 +62,9 @@ fn fs(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
52
62
  color = color * mix(1.0, vignette, vignetteIntensity);
53
63
  }
54
64
 
65
+ // Dither: break 8-bit banding on smooth gradients
66
+ color = color + dither(uv);
67
+
55
68
  return vec4(color, 1.0);
56
69
  }
57
70
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"tonemap-pass.js","sourceRoot":"","sources":["../src/tonemap-pass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tonemap-pass.js","sourceRoot":"","sources":["../src/tonemap-pass.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@certe/atmos-renderer",
3
3
  "description": "WebGPU PBR renderer for the Atmos Engine — lights, shadows, skinning, post-processing",
4
- "version": "0.8.6",
4
+ "version": "0.8.8",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/certesolutions-cyber/atmos.git",
@@ -29,8 +29,8 @@
29
29
  "LICENCE"
30
30
  ],
31
31
  "dependencies": {
32
- "@certe/atmos-core": "^0.8.6",
33
- "@certe/atmos-math": "^0.8.6"
32
+ "@certe/atmos-core": "^0.8.8",
33
+ "@certe/atmos-math": "^0.8.8"
34
34
  },
35
35
  "scripts": {
36
36
  "test": "vitest run"