@opsydyn/effect-three 0.1.0 → 0.2.0
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.
- package/CHANGELOG.md +11 -0
- package/README.md +1 -3
- package/dist/{index-ef8pbv9g.js → index-01kwfekm.js} +3 -3
- package/dist/{index-ef8pbv9g.js.map → index-01kwfekm.js.map} +3 -3
- package/dist/index.js +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/kernel/labels.d.ts +6 -0
- package/dist/kernel/labels.d.ts.map +1 -1
- package/dist/kernel/renderKit.d.ts +5 -4
- package/dist/kernel/renderKit.d.ts.map +1 -1
- package/dist/kernel/sceneGraph.d.ts.map +1 -1
- package/dist/webgl/index.js +2 -2
- package/dist/webgl/index.js.map +3 -3
- package/dist/webgpu/index.js +2 -2
- package/dist/webgpu/index.js.map +3 -3
- package/package.json +1 -1
- package/src/kernel/labels.ts +6 -0
- package/src/kernel/renderKit.ts +5 -4
- package/src/kernel/sceneGraph.ts +4 -2
- package/src/webgl/index.ts +1 -1
- package/src/webgpu/index.ts +2 -2
package/dist/index.js
CHANGED
|
@@ -163,7 +163,7 @@ import {
|
|
|
163
163
|
createSceneLoop2,
|
|
164
164
|
recordingRendererFactory2,
|
|
165
165
|
createSceneGraph2
|
|
166
|
-
} from "./index-
|
|
166
|
+
} from "./index-01kwfekm.js";
|
|
167
167
|
var __defProp = Object.defineProperty;
|
|
168
168
|
var __returnValue = (v) => v;
|
|
169
169
|
function __exportSetter(name, newValue) {
|
package/dist/kernel/index.js
CHANGED
package/dist/kernel/labels.d.ts
CHANGED
|
@@ -40,6 +40,12 @@ export type HostedLabel = {
|
|
|
40
40
|
* and glyphs build in the background), so the scene can draw again.
|
|
41
41
|
*/
|
|
42
42
|
export type LabelEngine = {
|
|
43
|
+
/** A label drawn with WebGL's own materials, for a `'webgl'` render kit. */
|
|
43
44
|
readonly create: (label: LabelNode, ready: () => void) => HostedLabel;
|
|
45
|
+
/**
|
|
46
|
+
* A label drawn with three's node materials (TSL), for a `'tsl'` render kit such as
|
|
47
|
+
* `WebGPURenderer`'s. Without it, those renderers draw no labels.
|
|
48
|
+
*/
|
|
49
|
+
readonly createTsl?: (label: LabelNode, ready: () => void) => HostedLabel;
|
|
44
50
|
};
|
|
45
51
|
//# sourceMappingURL=labels.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/kernel/labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7D,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,WAAW,GAAG;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC;IAC/D,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/kernel/labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7D,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,WAAW,GAAG;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC;IAC/D,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;IACtE;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;CAC3E,CAAC"}
|
|
@@ -36,11 +36,12 @@ export type ShadowedScene = {
|
|
|
36
36
|
/** A renderer's shaded parts. */
|
|
37
37
|
export type RenderKit = {
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* The kind of material the renderer draws: `'webgl'`, WebGL's own materials, for
|
|
40
|
+
* `WebGLRenderer`; `'tsl'`, three's node materials, for `WebGPURenderer`. A label engine
|
|
41
|
+
* draws with its implementation for it (`LabelEngine.create` or `createTsl`); WebGL
|
|
42
|
+
* materials break a WebGPU frame, so without a TSL implementation labels stay empty.
|
|
42
43
|
*/
|
|
43
|
-
readonly
|
|
44
|
+
readonly shading: 'webgl' | 'tsl';
|
|
44
45
|
readonly sky: () => HostedSky;
|
|
45
46
|
readonly shaderGrid: (node: ShaderGridNode) => HostedShaderGrid;
|
|
46
47
|
readonly contactShadows: (graph: ShadowedScene, renderer: SceneRenderer) => ContactShadowPasses;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderKit.d.ts","sourceRoot":"","sources":["../../src/kernel/renderKit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,qFAAqF;AACrF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG;IAChC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG;IACtB
|
|
1
|
+
{"version":3,"file":"renderKit.d.ts","sourceRoot":"","sources":["../../src/kernel/renderKit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,qFAAqF;AACrF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG;IAChC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,gBAAgB,CAAC;IAChE,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,KAAK,mBAAmB,CAAC;CACjG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneGraph.d.ts","sourceRoot":"","sources":["../../src/kernel/sceneGraph.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sceneGraph.d.ts","sourceRoot":"","sources":["../../src/kernel/sceneGraph.ts"],"names":[],"mappings":"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"}
|
package/dist/webgl/index.js
CHANGED
|
@@ -226,7 +226,7 @@ var hostSky = () => {
|
|
|
226
226
|
|
|
227
227
|
// src/webgl/index.ts
|
|
228
228
|
var webglKit = {
|
|
229
|
-
|
|
229
|
+
shading: "webgl",
|
|
230
230
|
sky: hostSky,
|
|
231
231
|
shaderGrid: hostShaderGrid,
|
|
232
232
|
contactShadows: createContactShadows
|
|
@@ -235,5 +235,5 @@ export {
|
|
|
235
235
|
webglKit
|
|
236
236
|
};
|
|
237
237
|
|
|
238
|
-
//# debugId=
|
|
238
|
+
//# debugId=E10747A03E7930B464756E2164756E21
|
|
239
239
|
//# sourceMappingURL=index.js.map
|
package/dist/webgl/index.js.map
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"/**\n * The WebGL kit's contact shadow materials: three's depth material with its output\n * replaced by the shadow (as Drei's `ContactShadows`, `bf6f4ad`), and three's horizontal\n * and vertical blur shaders. The passes themselves are the kernel's.\n *\n * @module\n */\nimport { type Color, MeshDepthMaterial, ShaderMaterial } from 'three';\nimport { HorizontalBlurShader } from 'three/addons/shaders/HorizontalBlurShader.js';\nimport { VerticalBlurShader } from 'three/addons/shaders/VerticalBlurShader.js';\n\nimport {\n type BlurPass,\n createContactShadowPasses,\n type ShadowMaterials,\n} from '../kernel/contactShadowPasses.ts';\nimport type { SceneRenderer } from '../kernel/renderer.ts';\nimport type { ContactShadowPasses, ShadowedScene } from '../kernel/renderKit.ts';\n\n/**\n * The shadow pass's edit to three's depth shader: its basic-packing output, and the\n * shadow written instead (darkest where an object touches the plane).\n */\nconst shadowShader = {\n depthOutput: 'gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n shadowOutput: 'gl_FragColor = vec4( shadowColor * fragCoordZ * 2.0, 1.0 - fragCoordZ );',\n} as const;\n\nconst depth = (color: Color): MeshDepthMaterial => {\n const material = new MeshDepthMaterial();\n material.depthTest = false;\n material.depthWrite = false;\n material.onBeforeCompile = (shader) => {\n shader.uniforms['shadowColor'] = { value: color };\n shader.fragmentShader = `uniform vec3 shadowColor;\\n${shader.fragmentShader.replace(\n shadowShader.depthOutput,\n shadowShader.shadowOutput,\n )}`;\n };\n return material;\n};\n\n/** three's blur shaders: `h` (horizontal) or `v` (vertical) is the step, `tDiffuse` the source. */\nconst blurShaders = {\n horizontal: { shader: HorizontalBlurShader, step: 'h' },\n vertical: { shader: VerticalBlurShader, step: 'v' },\n} as const;\n\nconst blur = (direction: 'horizontal' | 'vertical'): BlurPass => {\n const { shader, step } = blurShaders[direction];\n const material = new ShaderMaterial({ ...shader, depthTest: false });\n return {\n material,\n set: (source, amount) => {\n Reflect.set(material.uniforms['tDiffuse'] ?? {}, 'value', source);\n Reflect.set(material.uniforms[step] ?? {}, 'value', amount);\n },\n };\n};\n\nconst webglShadowMaterials: ShadowMaterials = { depth, blur, flippedTargets: false };\n\n/** Creates the contact shadow passes for one scene graph and renderer, in GLSL. */\nexport const createContactShadows = (\n graph: ShadowedScene,\n renderer: SceneRenderer,\n): ContactShadowPasses => createContactShadowPasses(graph, renderer, webglShadowMaterials);\n",
|
|
6
6
|
"/**\n * Drei's `Grid` (`src/core/Grid.tsx` at `bf6f4ad`, MIT; itself after Fyrestar's\n * `THREE.InfiniteGridHelper` and threlte's `Grid`): a plane whose shader draws thin cell\n * lines and thicker section lines from screen-space derivatives, fading with distance\n * from the camera's foot on the plane. An infinite grid stretches the plane by the fade\n * distance; one that follows the camera slides under it.\n *\n * Each frame the material needs the camera drawing it projected onto the grid's plane.\n * Drei sets that in `useFrame`; here `onBeforeRender` does it, so every view (and each\n * eye in XR) gets its own camera.\n *\n * @module\n */\nimport {\n BackSide,\n Color,\n DoubleSide,\n FrontSide,\n Mesh,\n Plane,\n PlaneGeometry,\n ShaderMaterial,\n type Side,\n Vector3,\n} from 'three';\n\nimport type { MaterialSide, ShaderGridNode } from '../kernel/description.ts';\nimport type { HostedShaderGrid } from '../kernel/renderKit.ts';\n\n/** The mesh a shader grid is hosted as. */\nexport type HostShaderGrid = Mesh<PlaneGeometry, ShaderMaterial>;\n\nconst sides = { front: FrontSide, back: BackSide, double: DoubleSide } satisfies Record<\n MaterialSide,\n Side\n>;\n\nconst vertexShader = /* glsl */ `\n uniform vec3 cameraOnPlane;\n uniform vec3 planeOrigin;\n uniform float fadeDistance;\n uniform bool infiniteGrid;\n uniform bool followCamera;\n\n varying vec3 gridPosition;\n varying vec4 worldPosition;\n\n void main() {\n // The plane geometry lies in XY; the grid lies in XZ.\n gridPosition = position.xzy;\n if (infiniteGrid) gridPosition *= 1.0 + fadeDistance;\n worldPosition = modelMatrix * vec4(gridPosition, 1.0);\n if (followCamera) {\n worldPosition.xyz += cameraOnPlane - planeOrigin;\n gridPosition = (inverse(modelMatrix) * worldPosition).xyz;\n }\n gl_Position = projectionMatrix * viewMatrix * worldPosition;\n }\n`;\n\nconst fragmentShader = /* glsl */ `\n uniform vec3 cameraOnPlane;\n uniform float cellSize;\n uniform float cellThickness;\n uniform vec3 cellColor;\n uniform float sectionSize;\n uniform float sectionThickness;\n uniform vec3 sectionColor;\n uniform float fadeDistance;\n uniform float fadeStrength;\n uniform float fadeFrom;\n\n varying vec3 gridPosition;\n varying vec4 worldPosition;\n\n // 1 on a line of a grid with this spacing, 0 between, antialiased over a pixel.\n float lines(float spacing, float thickness) {\n vec2 at = gridPosition.xz / spacing;\n vec2 away = abs(fract(at - 0.5) - 0.5) / fwidth(at);\n return 1.0 - min(min(away.x, away.y) + 1.0 - thickness, 1.0);\n }\n\n void main() {\n float cell = lines(cellSize, cellThickness);\n float section = lines(sectionSize, sectionThickness);\n float distanceAway = distance(cameraOnPlane * fadeFrom, worldPosition.xyz);\n float fade = pow(1.0 - min(distanceAway / fadeDistance, 1.0), fadeStrength);\n vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * section));\n float alpha = (cell + section) * fade;\n alpha = mix(0.75 * alpha, alpha, section);\n if (alpha <= 0.0) discard;\n gl_FragColor = vec4(color, alpha);\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n }\n`;\n\nconst up = new Vector3(0, 1, 0);\nconst origin = new Vector3();\nconst plane = new Plane();\nconst cameraPosition = new Vector3();\n\n/** Writes a node's settings into its material's uniforms. */\nconst writeUniforms = (material: ShaderMaterial, node: ShaderGridNode): void => {\n const { uniforms } = material;\n const set = (name: string, value: unknown): void => {\n const uniform = uniforms[name];\n if (uniform !== undefined) uniform.value = value;\n };\n set('cellSize', node.cellSize);\n set('cellThickness', node.cellThickness);\n set('sectionSize', node.sectionSize);\n set('sectionThickness', node.sectionThickness);\n set('fadeDistance', node.fadeDistance);\n set('fadeStrength', node.fadeStrength);\n set('fadeFrom', node.fadeFrom);\n set('infiniteGrid', node.infinite);\n set('followCamera', node.followCamera);\n uniforms['cellColor']?.value.setHex(node.cellColor);\n uniforms['sectionColor']?.value.setHex(node.sectionColor);\n material.side = sides[node.side];\n};\n\n/** Places the grid and its plane from its description. */\nconst writePlacement = (mesh: HostShaderGrid, node: ShaderGridNode): void => {\n mesh.position.fromArray(node.position);\n mesh.rotation.fromArray([...node.rotation]);\n};\n\n/** Creates the grid mesh for a node. */\nexport const createShaderGrid = (node: ShaderGridNode): HostShaderGrid => {\n const material = new ShaderMaterial({\n uniforms: {\n cellSize: { value: 0 },\n cellThickness: { value: 0 },\n cellColor: { value: new Color() },\n sectionSize: { value: 0 },\n sectionThickness: { value: 0 },\n sectionColor: { value: new Color() },\n fadeDistance: { value: 0 },\n fadeStrength: { value: 0 },\n fadeFrom: { value: 0 },\n infiniteGrid: { value: false },\n followCamera: { value: false },\n cameraOnPlane: { value: new Vector3() },\n planeOrigin: { value: new Vector3() },\n },\n vertexShader,\n fragmentShader,\n transparent: true,\n });\n writeUniforms(material, node);\n const mesh: HostShaderGrid = new Mesh(new PlaneGeometry(...node.size), material);\n // The shader moves vertices (infinite, following): the plane's own bounds mean nothing.\n mesh.frustumCulled = false;\n writePlacement(mesh, node);\n mesh.onBeforeRender = (_renderer, _scene, camera) => {\n plane.setFromNormalAndCoplanarPoint(up, origin).applyMatrix4(mesh.matrixWorld);\n plane.projectPoint(\n cameraPosition.setFromMatrixPosition(camera.matrixWorld),\n material.uniforms['cameraOnPlane']?.value,\n );\n material.uniforms['planeOrigin']?.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n };\n return mesh;\n};\n\n/** Applies a new description to a grid mesh. */\nexport const updateShaderGrid = (\n mesh: HostShaderGrid,\n previous: ShaderGridNode,\n next: ShaderGridNode,\n): void => {\n if (previous.size[0] !== next.size[0] || previous.size[1] !== next.size[1]) {\n mesh.geometry.dispose();\n mesh.geometry = new PlaneGeometry(...next.size);\n }\n writeUniforms(mesh.material, next);\n writePlacement(mesh, next);\n};\n\n/** Frees the grid's geometry and material, which are its own. */\nexport const disposeShaderGrid = (mesh: HostShaderGrid): void => {\n mesh.geometry.dispose();\n mesh.material.dispose();\n};\n\n/** The WebGL kit's shader grid: the mesh, updated in place and freed with it. */\nexport const hostShaderGrid = (node: ShaderGridNode): HostedShaderGrid => {\n const mesh = createShaderGrid(node);\n return {\n object: mesh,\n update: (previous, next) => updateShaderGrid(mesh, previous, next),\n dispose: () => disposeShaderGrid(mesh),\n };\n};\n",
|
|
7
7
|
"/**\n * The WebGL kit's sky: three.js's `Sky` (Preetham, `addons/objects/Sky.js` at 0.186.1),\n * as Drei's `Sky` draws it (`bf6f4ad`, `src/core/Sky.tsx`): a box scaled to `distance`\n * whose shader paints the daylight sky for a sun position. Never picked.\n *\n * @module\n */\nimport { Vector3 } from 'three';\nimport { Sky as SkyMesh } from 'three/addons/objects/Sky.js';\n\nimport type { Sky } from '../kernel/description.ts';\nimport type { HostedSky } from '../kernel/renderKit.ts';\n\n/** Writes a sky's description into the mesh's uniforms and scale. */\nconst writeSky = (mesh: SkyMesh, description: Sky): void => {\n const { uniforms } = mesh.material;\n const set = (name: string, value: unknown): void => {\n const uniform = uniforms[name];\n if (uniform !== undefined) uniform.value = value;\n };\n set('turbidity', description.turbidity);\n set('rayleigh', description.rayleigh);\n set('mieCoefficient', description.mieCoefficient);\n set('mieDirectionalG', description.mieDirectionalG);\n set('cloudCoverage', description.clouds);\n set('sunPosition', new Vector3().fromArray(description.sunPosition));\n mesh.scale.setScalar(description.distance);\n};\n\n/** Creates the sky mesh; the scene graph adds it and writes its description. */\nexport const hostSky = (): HostedSky => {\n const mesh = new SkyMesh();\n mesh.raycast = () => undefined;\n return {\n object: mesh,\n update: (description) => writeSky(mesh, description),\n dispose: () => {\n mesh.geometry.dispose();\n mesh.material.dispose();\n },\n };\n};\n",
|
|
8
|
-
"/**\n * The WebGL render kit: the scene parts written in GLSL (the sky, the shader grid,\n * contact shadows), for renderers drawing with three.js's `WebGLRenderer`. The Foldkit\n * adapter's `webglRendererFactory` carries it; pass it to `createSceneGraph({ kit })`\n * when using the kernel directly.\n *\n * @module\n */\nimport type { RenderKit } from '../kernel/renderKit.ts';\nimport { createContactShadows } from './contactShadows.ts';\nimport { hostShaderGrid } from './shaderGrid.ts';\nimport { hostSky } from './sky.ts';\n\nexport const webglKit: RenderKit = {\n
|
|
8
|
+
"/**\n * The WebGL render kit: the scene parts written in GLSL (the sky, the shader grid,\n * contact shadows), for renderers drawing with three.js's `WebGLRenderer`. The Foldkit\n * adapter's `webglRendererFactory` carries it; pass it to `createSceneGraph({ kit })`\n * when using the kernel directly.\n *\n * @module\n */\nimport type { RenderKit } from '../kernel/renderKit.ts';\nimport { createContactShadows } from './contactShadows.ts';\nimport { hostShaderGrid } from './shaderGrid.ts';\nimport { hostSky } from './sky.ts';\n\nexport const webglKit: RenderKit = {\n shading: 'webgl',\n sky: hostSky,\n shaderGrid: hostShaderGrid,\n contactShadows: createContactShadows,\n};\n"
|
|
9
9
|
],
|
|
10
|
-
"mappings": "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
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": "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",
|
|
11
|
+
"debugId": "E10747A03E7930B464756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
package/dist/webgpu/index.js
CHANGED
|
@@ -203,7 +203,7 @@ var hostSky = () => {
|
|
|
203
203
|
|
|
204
204
|
// src/webgpu/index.ts
|
|
205
205
|
var webgpuKit = {
|
|
206
|
-
|
|
206
|
+
shading: "tsl",
|
|
207
207
|
sky: hostSky,
|
|
208
208
|
shaderGrid: hostShaderGrid,
|
|
209
209
|
contactShadows: createContactShadows
|
|
@@ -212,5 +212,5 @@ export {
|
|
|
212
212
|
webgpuKit
|
|
213
213
|
};
|
|
214
214
|
|
|
215
|
-
//# debugId=
|
|
215
|
+
//# debugId=3D261B4594F0512A64756E2164756E21
|
|
216
216
|
//# sourceMappingURL=index.js.map
|
package/dist/webgpu/index.js.map
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"/**\n * The WebGPU kit's contact shadow materials, in TSL: the WebGL kit's shadow-from-depth\n * output (colour `color · depth · 2`, alpha `1 − depth`) and three's horizontal and\n * vertical blur shaders (nine taps, their weights). The passes themselves are the\n * kernel's.\n *\n * @module\n */\nimport { type Color, NoBlending, Texture } from 'three';\nimport { depth, float, texture, uniform, uv, vec2 } from 'three/tsl';\nimport { MeshBasicNodeMaterial } from 'three/webgpu';\n\nimport {\n type BlurPass,\n createContactShadowPasses,\n type ShadowMaterials,\n} from '../kernel/contactShadowPasses.ts';\nimport type { SceneRenderer } from '../kernel/renderer.ts';\nimport type { ContactShadowPasses, ShadowedScene } from '../kernel/renderKit.ts';\n\n/** A material writing exactly what its nodes say: no blending, depth or tone mapping. */\nconst plainMaterial = (): MeshBasicNodeMaterial => {\n const material = new MeshBasicNodeMaterial();\n material.transparent = true;\n material.blending = NoBlending;\n material.depthTest = false;\n material.depthWrite = false;\n material.toneMapped = false;\n return material;\n};\n\nconst depthMaterial = (color: Color): MeshBasicNodeMaterial => {\n const material = plainMaterial();\n // Darkest where an object touches the plane: `depth` is linear for the orthographic camera.\n material.colorNode = uniform(color).mul(depth).mul(2);\n material.opacityNode = float(1).sub(depth);\n return material;\n};\n\n/** three's `HorizontalBlurShader` and `VerticalBlurShader` taps: offset and weight. */\nconst taps = [\n [-4, 0.051],\n [-3, 0.0918],\n [-2, 0.12245],\n [-1, 0.1531],\n [0, 0.1633],\n [1, 0.1531],\n [2, 0.12245],\n [3, 0.0918],\n [4, 0.051],\n] as const;\n\nconst blur = (direction: 'horizontal' | 'vertical'): BlurPass => {\n const source = texture(new Texture());\n const step = uniform(0);\n const along = direction === 'horizontal' ? vec2(step, 0) : vec2(0, step);\n const [first, ...rest] = taps.map(([offset, weight]) =>\n source.sample(uv().add(along.mul(offset))).mul(weight),\n );\n const sum = rest.reduce((total, tap) => total.add(tap), first ?? source);\n const material = plainMaterial();\n material.colorNode = sum.rgb;\n material.opacityNode = sum.a;\n return {\n material,\n set: (map, amount) => {\n source.value = map;\n step.value = amount;\n },\n };\n};\n\nconst webgpuShadowMaterials: ShadowMaterials = {\n depth: depthMaterial,\n blur,\n flippedTargets: true,\n};\n\n/** Creates the contact shadow passes for one scene graph and renderer, in TSL. */\nexport const createContactShadows = (\n graph: ShadowedScene,\n renderer: SceneRenderer,\n): ContactShadowPasses => createContactShadowPasses(graph, renderer, webgpuShadowMaterials);\n",
|
|
6
6
|
"/**\n * The WebGPU kit's shader grid: the WebGL kit's grid (Drei's `Grid`, `bf6f4ad`, MIT; after\n * Fyrestar's `THREE.InfiniteGridHelper` and threlte's `Grid`) written in TSL, so that\n * three's `WebGPURenderer` can draw it on either backend. Same lines, same fade, same\n * camera uniforms set in `onBeforeRender`.\n *\n * @module\n */\nimport {\n BackSide,\n Color,\n DoubleSide,\n FrontSide,\n Mesh,\n Plane,\n PlaneGeometry,\n type Side,\n Vector3,\n} from 'three';\nimport {\n abs,\n distance,\n float,\n fract,\n fwidth,\n min,\n mix,\n modelWorldMatrix,\n modelWorldMatrixInverse,\n positionGeometry,\n pow,\n select,\n uniform,\n varying,\n vec4,\n} from 'three/tsl';\nimport { MeshBasicNodeMaterial } from 'three/webgpu';\n\nimport type { MaterialSide, ShaderGridNode } from '../kernel/description.ts';\nimport type { HostedShaderGrid } from '../kernel/renderKit.ts';\n\nconst sides = { front: FrontSide, back: BackSide, double: DoubleSide } satisfies Record<\n MaterialSide,\n Side\n>;\n\n/** The grid's uniforms: one node each, written from the description. */\nconst createUniforms = () => ({\n cellSize: uniform(0.5),\n cellThickness: uniform(0.5),\n cellColor: uniform(new Color()),\n sectionSize: uniform(1),\n sectionThickness: uniform(1),\n sectionColor: uniform(new Color()),\n fadeDistance: uniform(100),\n fadeStrength: uniform(1),\n fadeFrom: uniform(1),\n infinite: uniform(0),\n followCamera: uniform(0),\n cameraOnPlane: uniform(new Vector3()),\n planeOrigin: uniform(new Vector3()),\n});\n\ntype Uniforms = ReturnType<typeof createUniforms>;\n\n/** The grid's material: the WebGL kit's vertex and fragment shaders, as TSL nodes. */\nconst gridMaterial = (u: Uniforms): MeshBasicNodeMaterial => {\n const material = new MeshBasicNodeMaterial({ transparent: true });\n // The plane geometry lies in XY; the grid lies in XZ. Infinite grids reach the fade.\n const lifted = positionGeometry.xzy.mul(\n select(u.infinite.greaterThan(0.5), u.fadeDistance.add(1), 1),\n );\n // Following the camera slides the plane by its foot's offset, in the grid's own space.\n const shift = modelWorldMatrixInverse.mul(vec4(u.cameraOnPlane.sub(u.planeOrigin), 0)).xyz;\n const local = select(u.followCamera.greaterThan(0.5), lifted.add(shift), lifted);\n material.positionNode = local;\n const gridPosition = varying(local);\n const worldPosition = varying(modelWorldMatrix.mul(vec4(local, 1)).xyz);\n // 1 on a line of a grid with this spacing, 0 between, antialiased over a pixel.\n const lines = (spacing: typeof u.cellSize, thickness: typeof u.cellThickness) => {\n const at = gridPosition.xz.div(spacing);\n const away = abs(fract(at.sub(0.5)).sub(0.5)).div(fwidth(at));\n return float(1).sub(min(min(away.x, away.y).add(1).sub(thickness), 1));\n };\n const cell = lines(u.cellSize, u.cellThickness);\n const section = lines(u.sectionSize, u.sectionThickness);\n const away = distance(u.cameraOnPlane.mul(u.fadeFrom), worldPosition);\n const fade = pow(float(1).sub(min(away.div(u.fadeDistance), 1)), u.fadeStrength);\n const alpha = cell.add(section).mul(fade);\n material.colorNode = mix(u.cellColor, u.sectionColor, min(1, u.sectionThickness.mul(section)));\n material.opacityNode = mix(alpha.mul(0.75), alpha, section);\n // Discard where there is no line, as the WebGL kit's shader does.\n material.alphaTest = 1e-4;\n return material;\n};\n\n/** Writes a node's settings into the uniforms and material. */\nconst writeUniforms = (\n u: Uniforms,\n material: MeshBasicNodeMaterial,\n node: ShaderGridNode,\n): void => {\n u.cellSize.value = node.cellSize;\n u.cellThickness.value = node.cellThickness;\n u.cellColor.value.setHex(node.cellColor);\n u.sectionSize.value = node.sectionSize;\n u.sectionThickness.value = node.sectionThickness;\n u.sectionColor.value.setHex(node.sectionColor);\n u.fadeDistance.value = node.fadeDistance;\n u.fadeStrength.value = node.fadeStrength;\n u.fadeFrom.value = node.fadeFrom;\n u.infinite.value = node.infinite ? 1 : 0;\n u.followCamera.value = node.followCamera ? 1 : 0;\n material.side = sides[node.side];\n};\n\nconst up = new Vector3(0, 1, 0);\nconst origin = new Vector3();\nconst plane = new Plane();\nconst cameraPosition = new Vector3();\n\n/** The WebGPU kit's shader grid: a plane with the grid material, placed and updated. */\nexport const hostShaderGrid = (node: ShaderGridNode): HostedShaderGrid => {\n const u = createUniforms();\n const material = gridMaterial(u);\n writeUniforms(u, material, node);\n const mesh = new Mesh(new PlaneGeometry(...node.size), material);\n // The shader moves vertices (infinite, following): the plane's own bounds mean nothing.\n mesh.frustumCulled = false;\n const place = (next: ShaderGridNode): void => {\n mesh.position.fromArray(next.position);\n mesh.rotation.fromArray([...next.rotation]);\n };\n place(node);\n mesh.onBeforeRender = (_renderer, _scene, camera) => {\n plane.setFromNormalAndCoplanarPoint(up, origin).applyMatrix4(mesh.matrixWorld);\n plane.projectPoint(\n cameraPosition.setFromMatrixPosition(camera.matrixWorld),\n u.cameraOnPlane.value,\n );\n u.planeOrigin.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n };\n return {\n object: mesh,\n update: (previous, next) => {\n if (previous.size[0] !== next.size[0] || previous.size[1] !== next.size[1]) {\n mesh.geometry.dispose();\n mesh.geometry = new PlaneGeometry(...next.size);\n }\n writeUniforms(u, material, next);\n place(next);\n },\n dispose: () => {\n mesh.geometry.dispose();\n material.dispose();\n },\n };\n};\n",
|
|
7
7
|
"/**\n * The WebGPU kit's sky: three.js's `SkyMesh` (`addons/objects/SkyMesh.js` at 0.186.1), the\n * same Preetham sky as the WebGL kit's `Sky`, written in TSL. Never picked.\n *\n * @module\n */\nimport { SkyMesh } from 'three/addons/objects/SkyMesh.js';\n\nimport type { Sky } from '../kernel/description.ts';\nimport type { HostedSky } from '../kernel/renderKit.ts';\n\n/** Writes a sky's description into the mesh's uniforms and scale. */\nconst writeSky = (mesh: SkyMesh, description: Sky): void => {\n mesh.turbidity.value = description.turbidity;\n mesh.rayleigh.value = description.rayleigh;\n mesh.mieCoefficient.value = description.mieCoefficient;\n mesh.mieDirectionalG.value = description.mieDirectionalG;\n mesh.cloudCoverage.value = description.clouds;\n mesh.sunPosition.value.fromArray(description.sunPosition);\n mesh.scale.setScalar(description.distance);\n};\n\n/** Creates the sky mesh; the scene graph adds it and writes its description. */\nexport const hostSky = (): HostedSky => {\n const mesh = new SkyMesh();\n mesh.raycast = () => undefined;\n return {\n object: mesh,\n update: (description) => writeSky(mesh, description),\n dispose: () => {\n mesh.geometry.dispose();\n mesh.material.dispose();\n },\n };\n};\n",
|
|
8
|
-
"/**\n * The WebGPU render kit: the scene's shaded parts (the sky, the shader grid, contact\n * shadows) written in TSL, for three.js's `WebGPURenderer` on either of its backends.\n * The Foldkit adapter's `webgpuRendererFactory` carries it.\n *\n * @module\n */\nimport type { RenderKit } from '../kernel/renderKit.ts';\nimport { createContactShadows } from './contactShadows.ts';\nimport { hostShaderGrid } from './shaderGrid.ts';\nimport { hostSky } from './sky.ts';\n\nexport const webgpuKit: RenderKit = {\n //
|
|
8
|
+
"/**\n * The WebGPU render kit: the scene's shaded parts (the sky, the shader grid, contact\n * shadows) written in TSL, for three.js's `WebGPURenderer` on either of its backends.\n * The Foldkit adapter's `webgpuRendererFactory` carries it.\n *\n * @module\n */\nimport type { RenderKit } from '../kernel/renderKit.ts';\nimport { createContactShadows } from './contactShadows.ts';\nimport { hostShaderGrid } from './shaderGrid.ts';\nimport { hostSky } from './sky.ts';\n\nexport const webgpuKit: RenderKit = {\n // Node materials: label engines draw with their TSL implementation (`createTsl`).\n shading: 'tsl',\n sky: hostSky,\n shaderGrid: hostShaderGrid,\n contactShadows: createContactShadows,\n};\n"
|
|
9
9
|
],
|
|
10
|
-
"mappings": "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
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": "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",
|
|
11
|
+
"debugId": "3D261B4594F0512A64756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
package/package.json
CHANGED
package/src/kernel/labels.ts
CHANGED
|
@@ -44,5 +44,11 @@ export type HostedLabel = {
|
|
|
44
44
|
* and glyphs build in the background), so the scene can draw again.
|
|
45
45
|
*/
|
|
46
46
|
export type LabelEngine = {
|
|
47
|
+
/** A label drawn with WebGL's own materials, for a `'webgl'` render kit. */
|
|
47
48
|
readonly create: (label: LabelNode, ready: () => void) => HostedLabel;
|
|
49
|
+
/**
|
|
50
|
+
* A label drawn with three's node materials (TSL), for a `'tsl'` render kit such as
|
|
51
|
+
* `WebGPURenderer`'s. Without it, those renderers draw no labels.
|
|
52
|
+
*/
|
|
53
|
+
readonly createTsl?: (label: LabelNode, ready: () => void) => HostedLabel;
|
|
48
54
|
};
|
package/src/kernel/renderKit.ts
CHANGED
|
@@ -42,11 +42,12 @@ export type ShadowedScene = {
|
|
|
42
42
|
/** A renderer's shaded parts. */
|
|
43
43
|
export type RenderKit = {
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
45
|
+
* The kind of material the renderer draws: `'webgl'`, WebGL's own materials, for
|
|
46
|
+
* `WebGLRenderer`; `'tsl'`, three's node materials, for `WebGPURenderer`. A label engine
|
|
47
|
+
* draws with its implementation for it (`LabelEngine.create` or `createTsl`); WebGL
|
|
48
|
+
* materials break a WebGPU frame, so without a TSL implementation labels stay empty.
|
|
48
49
|
*/
|
|
49
|
-
readonly
|
|
50
|
+
readonly shading: 'webgl' | 'tsl';
|
|
50
51
|
readonly sky: () => HostedSky;
|
|
51
52
|
readonly shaderGrid: (node: ShaderGridNode) => HostedShaderGrid;
|
|
52
53
|
readonly contactShadows: (graph: ShadowedScene, renderer: SceneRenderer) => ContactShadowPasses;
|
package/src/kernel/sceneGraph.ts
CHANGED
|
@@ -644,9 +644,11 @@ export const createSceneGraph = (options: SceneGraphOptions = {}): SceneGraph =>
|
|
|
644
644
|
return entry;
|
|
645
645
|
}
|
|
646
646
|
case 'Label': {
|
|
647
|
-
//
|
|
647
|
+
// The engine's implementation for the renderer's kind of material, if it has one.
|
|
648
648
|
const hosted =
|
|
649
|
-
options.kit?.
|
|
649
|
+
options.kit?.shading === 'tsl'
|
|
650
|
+
? options.labels?.createTsl?.(node, invalidate)
|
|
651
|
+
: options.labels?.create(node, invalidate);
|
|
650
652
|
const material = node.material === null ? undefined : store.acquireMaterial(node.material);
|
|
651
653
|
hosted?.setMaterial(material);
|
|
652
654
|
const entry: Entry = { _tag: 'Label', node, object: new Group(), hosted, material };
|
package/src/webgl/index.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { hostShaderGrid } from './shaderGrid.ts';
|
|
|
12
12
|
import { hostSky } from './sky.ts';
|
|
13
13
|
|
|
14
14
|
export const webglKit: RenderKit = {
|
|
15
|
-
|
|
15
|
+
shading: 'webgl',
|
|
16
16
|
sky: hostSky,
|
|
17
17
|
shaderGrid: hostShaderGrid,
|
|
18
18
|
contactShadows: createContactShadows,
|
package/src/webgpu/index.ts
CHANGED
|
@@ -11,8 +11,8 @@ import { hostShaderGrid } from './shaderGrid.ts';
|
|
|
11
11
|
import { hostSky } from './sky.ts';
|
|
12
12
|
|
|
13
13
|
export const webgpuKit: RenderKit = {
|
|
14
|
-
//
|
|
15
|
-
|
|
14
|
+
// Node materials: label engines draw with their TSL implementation (`createTsl`).
|
|
15
|
+
shading: 'tsl',
|
|
16
16
|
sky: hostSky,
|
|
17
17
|
shaderGrid: hostShaderGrid,
|
|
18
18
|
contactShadows: createContactShadows,
|