@hypersoniclabs/helix-cli 0.1.25-helix3.522 → 0.1.25-helix3.523

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.
@@ -128,6 +128,8 @@ const hemiDirection = (x, y, views) => {
128
128
  const u = 2 * x / (views - 1) - 1, v = 2 * y / (views - 1) - 1, hx = (u + v) / 2, hz = (u - v) / 2;
129
129
  return new THREE.Vector3(hx, 1 - Math.abs(hx) - Math.abs(hz), hz).normalize();
130
130
  };
131
+ const toLinear = e => { const c = e / 255; return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4); };
132
+ const toEncoded = l => Math.round(255 * (l <= 0.0031308 ? 12.92 * l : 1.055 * Math.pow(l, 1 / 2.4) - 0.055));
131
133
  window.captureGBuffer = async ({ model, size, center, radius, ssaa, views, emissiveScale }) => {
132
134
  const gltf = await new GLTFLoader().loadAsync(model);
133
135
  gltf.scene.updateMatrixWorld(true);
@@ -141,10 +143,39 @@ window.captureGBuffer = async ({ model, size, center, radius, ssaa, views, emiss
141
143
  + (source.roughnessMap || source.metalnessMap ? 'vec4 orm = texture2D(ormMap, vUv);' : 'vec4 orm = vec4(1.0);') + '\n'
142
144
  + 'if (' + kind + ' == 1) { gl_FragColor = vec4(rough * orm.g, metal * orm.b, coat, 1.0); return; }\n'
143
145
  + 'vec3 e = glow' + (source.emissiveMap ? ' * texture2D(glowMap, vUv).rgb' : '') + '; gl_FragColor = vec4(e * ' + emissiveScale.toFixed(4) + ', 1.0); }';
146
+ // BLEND glass (a transparent material without an alpha test) is captured as the runtime shows it: a translucent pane over what is behind it, not an opaque
147
+ // glossy surface. Every pass blends it with the glass's own alpha (opacity x base colour alpha x vertex alpha), single-pass like the runtime's
148
+ // normalizeItemMaterials, after the opaque meshes, so a pixel holds glass-over-cabin (albedo, normal, roughness, metalness, coat, glow all averaged with the same
149
+ // weights). Over empty background the pixel keeps the glass's alpha as coverage, so a pane with nothing behind it is a see-through hole, as it is in the model.
150
+ // The target holds premultiplied values (three's NormalBlending over a cleared (0, 0, 0, 0) target), which the resolve below un-weights.
151
+ const isGlass = source => Boolean(source.transparent) && !(source.alphaTest > 0);
152
+ const glassPass = (source, pass) => {
153
+ const glass = new THREE.MeshBasicMaterial({ color: pass === 'albedo' ? source.color : 0xffffff, map: source.map, vertexColors: source.vertexColors,
154
+ opacity: source.opacity, transparent: true, depthWrite: false, side: source.side, toneMapped: false });
155
+ glass.forceSinglePass = true;
156
+ if (pass === 'albedo') return glass;
157
+ const kind = pass === 'normal' ? 0 : pass === 'material' ? 1 : 2, hasOrm = Boolean(source.roughnessMap || source.metalnessMap), hasGlow = Boolean(source.emissiveMap);
158
+ const uniforms = { rough: { value: source.roughness ?? 1 }, metal: { value: source.metalness ?? 0 }, coat: { value: source.clearcoat ?? 0 },
159
+ glow: { value: (source.emissive ?? new THREE.Color(0)).clone().multiplyScalar(source.emissiveIntensity ?? 1) },
160
+ glowMap: { value: source.emissiveMap ?? null }, ormMap: { value: source.roughnessMap ?? source.metalnessMap ?? null } };
161
+ glass.onBeforeCompile = shader => {
162
+ Object.assign(shader.uniforms, uniforms);
163
+ shader.vertexShader = 'varying vec3 vGN; varying vec2 vGUv;\n' + shader.vertexShader.replace('#include <begin_vertex>',
164
+ '#include <begin_vertex>\n vGN = normalize(mat3(viewMatrix) * mat3(modelMatrix) * normal); vGUv = uv;');
165
+ const value = kind === 0 ? 'normalize(vGN) * (gl_FrontFacing ? 1.0 : -1.0) * 0.5 + 0.5'
166
+ : kind === 1 ? 'vec3(rough * ' + (hasOrm ? 'texture2D(ormMap, vGUv).g' : '1.0') + ', metal * ' + (hasOrm ? 'texture2D(ormMap, vGUv).b' : '1.0') + ', coat)'
167
+ : 'glow' + (hasGlow ? ' * texture2D(glowMap, vGUv).rgb' : '') + ' * ' + emissiveScale.toFixed(4);
168
+ shader.fragmentShader = 'uniform float rough; uniform float metal; uniform float coat; uniform vec3 glow; uniform sampler2D glowMap; uniform sampler2D ormMap; varying vec3 vGN; varying vec2 vGUv;\n'
169
+ + shader.fragmentShader.replace('#include <opaque_fragment>', 'outgoingLight = ' + value + ';\n#include <opaque_fragment>');
170
+ };
171
+ glass.customProgramCacheKey = () => 'gbuffer-glass-' + kind + (hasOrm ? 'o' : '') + (hasGlow ? 'g' : '');
172
+ return glass;
173
+ };
144
174
  const build = pass => {
145
175
  const originals = meshes.map(mesh => mesh.material);
146
176
  meshes.forEach((mesh, index) => {
147
177
  const source = originals[index];
178
+ if (isGlass(source)) { const glass = glassPass(source, pass); owned.push(glass); mesh.material = glass; return; }
148
179
  if (pass === 'albedo') {
149
180
  const colour = new THREE.MeshBasicMaterial({ color: source.color, map: source.map, vertexColors: source.vertexColors, alphaTest: source.alphaTest, side: source.side, toneMapped: false });
150
181
  owned.push(colour); mesh.material = colour; return;
@@ -184,12 +215,18 @@ window.captureGBuffer = async ({ model, size, center, radius, ssaa, views, emiss
184
215
  }
185
216
  const pixels = new Uint8Array(big * big * 4); renderer.readRenderTargetPixels(target, 0, 0, big, big, pixels);
186
217
  meshes.forEach((mesh, index) => { mesh.material = originals[index]; });
187
- const reduced = new Uint8Array(size * size * 4), count = ssaa * ssaa;
218
+ const reduced = new Uint8Array(size * size * 4), count = ssaa * ssaa, colour = pass === 'albedo' || pass === 'emissive';
219
+ // The target holds premultiplied values (see the glass note above): an opaque subsample is (value, 1), a glass-over-nothing one is (value x alpha, alpha). Each subsample
220
+ // is turned back into its straight value before the coverage-weighted mean, so a pane over nothing keeps its own colour (and a partial alpha as coverage); a colour
221
+ // pass is decoded to linear for the division and encoded again, because its target stores sRGB. For opaque and cut-out content alpha is 0 or 255 and nothing changes.
222
+ const straight = (value, alpha) => alpha >= 255 ? value
223
+ : colour ? toEncoded(Math.min(1, toLinear(value) * 255 / alpha)) : Math.min(255, Math.round(value * 255 / alpha));
188
224
  for (let y = 0; y < size; y++) for (let x = 0; x < size; x++) {
189
225
  let r = 0, g = 0, b = 0, a = 0;
190
226
  for (let j = 0; j < ssaa; j++) for (let i = 0; i < ssaa; i++) {
191
227
  const p = ((y * ssaa + j) * big + (x * ssaa + i)) * 4, alpha = pixels[p + 3];
192
- a += alpha; r += pixels[p] * alpha; g += pixels[p + 1] * alpha; b += pixels[p + 2] * alpha;
228
+ if (alpha === 0) continue;
229
+ a += alpha; r += straight(pixels[p], alpha) * alpha; g += straight(pixels[p + 1], alpha) * alpha; b += straight(pixels[p + 2], alpha) * alpha;
193
230
  }
194
231
  const o = (y * size + x) * 4;
195
232
  if (a > 0) { reduced[o] = Math.round(r / a); reduced[o + 1] = Math.round(g / a); reduced[o + 2] = Math.round(b / a); }
@@ -1 +1 @@
1
- {"version":3,"file":"gbuffer.js","sourceRoot":"","sources":["../../src/itemLod/gbuffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gbuffer.js","sourceRoot":"","sources":["../../src/itemLod/gbuffer.ts"],"names":[],"mappings":"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"}