@aura3d/engine 4.2.0 → 4.3.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/README.md +1 -1
- package/dist/aura3d-cli/cli-help.d.ts.map +1 -1
- package/dist/aura3d-cli/cli-help.js +4 -2
- package/dist/aura3d-cli/cli-help.js.map +1 -1
- package/dist/aura3d-cli/cli.js +80 -2
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/commands/assets/index.js +2 -2
- package/dist/aura3d-cli/commands/assets/index.js.map +1 -1
- package/dist/aura3d-cli/commands/meshyLedger.d.ts +125 -14
- package/dist/aura3d-cli/commands/meshyLedger.d.ts.map +1 -1
- package/dist/aura3d-cli/commands/meshyLedger.js +262 -35
- package/dist/aura3d-cli/commands/meshyLedger.js.map +1 -1
- package/dist/aura3d-cli/commands/prd13/run.js +19 -16
- package/dist/aura3d-cli/commands/prd13/run.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +8 -0
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +12 -0
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/skin/analysis.d.ts +137 -0
- package/dist/aura3d-cli/skin/analysis.d.ts.map +1 -0
- package/dist/aura3d-cli/skin/analysis.js +382 -0
- package/dist/aura3d-cli/skin/analysis.js.map +1 -0
- package/dist/aura3d-cli/skin/command.d.ts +71 -0
- package/dist/aura3d-cli/skin/command.d.ts.map +1 -0
- package/dist/aura3d-cli/skin/command.js +186 -0
- package/dist/aura3d-cli/skin/command.js.map +1 -0
- package/dist/aura3d-cli/skin/glbEdit.d.ts +14 -0
- package/dist/aura3d-cli/skin/glbEdit.d.ts.map +1 -0
- package/dist/aura3d-cli/skin/glbEdit.js +152 -0
- package/dist/aura3d-cli/skin/glbEdit.js.map +1 -0
- package/dist/aura3d-cli/skin/gltf.d.ts +159 -0
- package/dist/aura3d-cli/skin/gltf.d.ts.map +1 -0
- package/dist/aura3d-cli/skin/gltf.js +379 -0
- package/dist/aura3d-cli/skin/gltf.js.map +1 -0
- package/dist/aura3d-cli/skin/rebuildLimbs.d.ts +31 -0
- package/dist/aura3d-cli/skin/rebuildLimbs.d.ts.map +1 -0
- package/dist/aura3d-cli/skin/rebuildLimbs.js +326 -0
- package/dist/aura3d-cli/skin/rebuildLimbs.js.map +1 -0
- package/dist/aura3d-cli/skin/repair.d.ts +41 -0
- package/dist/aura3d-cli/skin/repair.d.ts.map +1 -0
- package/dist/aura3d-cli/skin/repair.js +180 -0
- package/dist/aura3d-cli/skin/repair.js.map +1 -0
- package/dist/create-aura3d/index.js +1 -1
- package/dist/engine/agent-api/compiler/customMaterial.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/customMaterial.js +12 -1
- package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -1
- package/dist/engine/agent-api/nodes/types.d.ts +6 -0
- package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
- package/dist/game/index.d.ts +2 -2
- package/dist/game/index.d.ts.map +1 -1
- package/dist/game/index.js +1 -1
- package/dist/game/index.js.map +1 -1
- package/dist/game/motion/handBounce.d.ts +206 -0
- package/dist/game/motion/handBounce.d.ts.map +1 -0
- package/dist/game/motion/handBounce.js +267 -0
- package/dist/game/motion/handBounce.js.map +1 -0
- package/dist/game/motion/index.d.ts +2 -0
- package/dist/game/motion/index.d.ts.map +1 -1
- package/dist/game/motion/index.js +1 -0
- package/dist/game/motion/index.js.map +1 -1
- package/dist/game/session/warmPrograms.d.ts +17 -0
- package/dist/game/session/warmPrograms.d.ts.map +1 -1
- package/dist/game/session/warmPrograms.js +18 -1
- package/dist/game/session/warmPrograms.js.map +1 -1
- package/dist/physics/ensure.d.ts +2 -0
- package/dist/physics/ensure.d.ts.map +1 -0
- package/dist/physics/ensure.js +4 -0
- package/dist/physics/ensure.js.map +1 -0
- package/dist/physics/index.d.ts +1 -0
- package/dist/physics/index.d.ts.map +1 -1
- package/dist/physics/index.js +1 -0
- package/dist/physics/index.js.map +1 -1
- package/dist/physics/world.d.ts +1 -0
- package/dist/physics/world.d.ts.map +1 -1
- package/dist/physics/world.js +1 -0
- package/dist/physics/world.js.map +1 -1
- package/dist/physics-rapier/index.d.ts +2 -0
- package/dist/physics-rapier/index.d.ts.map +1 -1
- package/dist/physics-rapier/index.js +12 -10
- package/dist/physics-rapier/index.js.map +1 -1
- package/dist/physics-rapier/rapierInit.d.ts +6 -0
- package/dist/physics-rapier/rapierInit.d.ts.map +1 -0
- package/dist/physics-rapier/rapierInit.js +12 -0
- package/dist/physics-rapier/rapierInit.js.map +1 -0
- package/dist/physics-rapier/rapierInit.lazy.d.ts +6 -0
- package/dist/physics-rapier/rapierInit.lazy.d.ts.map +1 -0
- package/dist/physics-rapier/rapierInit.lazy.js +19 -0
- package/dist/physics-rapier/rapierInit.lazy.js.map +1 -0
- package/dist/rendering/DepthPass.d.ts.map +1 -1
- package/dist/rendering/DepthPass.js +30 -8
- package/dist/rendering/DepthPass.js.map +1 -1
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +7 -0
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/Renderer.d.ts +0 -2
- package/dist/rendering/Renderer.d.ts.map +1 -1
- package/dist/rendering/Renderer.js +6 -16
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/contracts/output.d.ts +9 -1
- package/dist/rendering/contracts/output.d.ts.map +1 -1
- package/dist/rendering/contracts/output.js.map +1 -1
- package/dist/rendering/output/OutputPass.d.ts +2 -0
- package/dist/rendering/output/OutputPass.d.ts.map +1 -1
- package/dist/rendering/output/OutputPass.js +26 -3
- package/dist/rendering/output/OutputPass.js.map +1 -1
- package/dist/rendering/output/ToneMappingOperators.glsl.d.ts +3 -1
- package/dist/rendering/output/ToneMappingOperators.glsl.d.ts.map +1 -1
- package/dist/rendering/output/ToneMappingOperators.glsl.js +19 -1
- package/dist/rendering/output/ToneMappingOperators.glsl.js.map +1 -1
- package/dist/rendering/post/v2Stages.d.ts +2 -7
- package/dist/rendering/post/v2Stages.d.ts.map +1 -1
- package/dist/rendering/post/v2Stages.js +2 -17
- package/dist/rendering/post/v2Stages.js.map +1 -1
- package/dist/rendering/post/vignetteColor.d.ts +8 -0
- package/dist/rendering/post/vignetteColor.d.ts.map +1 -0
- package/dist/rendering/post/vignetteColor.js +18 -0
- package/dist/rendering/post/vignetteColor.js.map +1 -0
- package/dist/rendering/renderer/PostprocessExecution.d.ts +10 -0
- package/dist/rendering/renderer/PostprocessExecution.d.ts.map +1 -1
- package/dist/rendering/renderer/PostprocessExecution.js +38 -38
- package/dist/rendering/renderer/PostprocessExecution.js.map +1 -1
- package/dist/rendering/renderer/coreOutputPostRoute.d.ts +25 -17
- package/dist/rendering/renderer/coreOutputPostRoute.d.ts.map +1 -1
- package/dist/rendering/renderer/coreOutputPostRoute.js +27 -18
- package/dist/rendering/renderer/coreOutputPostRoute.js.map +1 -1
- package/dist/rendering/renderer/qrSubFlags.d.ts +1 -1
- package/dist/rendering/renderer/qrSubFlags.d.ts.map +1 -1
- package/dist/rendering/renderer/qrSubFlags.js +2 -8
- package/dist/rendering/renderer/qrSubFlags.js.map +1 -1
- package/dist/rendering/shaders/chunks/author/index.d.ts.map +1 -1
- package/dist/rendering/shaders/chunks/author/index.js +7 -0
- package/dist/rendering/shaders/chunks/author/index.js.map +1 -1
- package/dist/rendering/shaders/chunks/author/shadow.glsl.d.ts +11 -0
- package/dist/rendering/shaders/chunks/author/shadow.glsl.d.ts.map +1 -0
- package/dist/rendering/shaders/chunks/author/shadow.glsl.js +57 -0
- package/dist/rendering/shaders/chunks/author/shadow.glsl.js.map +1 -0
- package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts +20 -0
- package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts.map +1 -1
- package/dist/rendering/shadows/DirectionalCascadeFitter.js +80 -7
- package/dist/rendering/shadows/DirectionalCascadeFitter.js.map +1 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.js +9 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.js.map +1 -1
- package/dist/rendering/shadows/ShadowSystem.d.ts.map +1 -1
- package/dist/rendering/shadows/ShadowSystem.js +7 -2
- package/dist/rendering/shadows/ShadowSystem.js.map +1 -1
- package/dist/rendering/webgl2/LdrPostprocessShader.d.ts +2 -0
- package/dist/rendering/webgl2/LdrPostprocessShader.d.ts.map +1 -1
- package/dist/rendering/webgl2/LdrPostprocessShader.js +25 -3
- package/dist/rendering/webgl2/LdrPostprocessShader.js.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.d.ts +11 -2
- package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.js +191 -16
- package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
- package/package.json +33 -26
- package/templates/cinematic-scene/package.json +2 -2
- package/templates/mini-game/package.json +2 -2
- package/templates/product-viewer/package.json +2 -2
- package/templates/production-asset-inspector/package.json +1 -1
- package/templates/production-material-studio/package.json +1 -1
- package/templates/production-product-configurator/package.json +1 -1
- package/templates/production-product-viewer/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/contracts/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AACjH,MAAM,WAAW,iBAAiB;IAAG,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC;CAAE;
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/contracts/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AACjH,MAAM,WAAW,iBAAiB;IAAG,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,2HAA2H;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,CAAC,qGAAqG;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CAAE;AAChhB,MAAM,WAAW,sBAAsB;IAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAAE;AACnL,MAAM,WAAW,qBAAqB;IAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAAE;AACxQ,MAAM,WAAW,cAAc;IAAG,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC;CAAE;AAEnK;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,2BAAoC,CAAC;AACxE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAErE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAG1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/contracts/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/contracts/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgC,MAAM,CAAC;AAGxE;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;IACpD,OAAO,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3E,CAAC"}
|
|
@@ -25,4 +25,6 @@ export declare class OutputPass implements OutputPassLike, DisposableResource {
|
|
|
25
25
|
private moduleFor;
|
|
26
26
|
dispose(): void;
|
|
27
27
|
}
|
|
28
|
+
/** The device's one OutputPass (one shader-variant cache), shared by the no-chain route and the PostGraph v2 OUT stage. */
|
|
29
|
+
export declare function outputPassForDevice(device: RenderDevice): OutputPass;
|
|
28
30
|
//# sourceMappingURL=OutputPass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputPass.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/output/OutputPass.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAGV,cAAc,EACd,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"OutputPass.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/output/OutputPass.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAGV,cAAc,EACd,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAqDpG,qBAAa,UAAW,YAAW,cAAc,EAAE,kBAAkB;IAKvD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyF;IAC5G,QAAQ,UAAS;gBAEK,MAAM,EAAE,YAAY;IAEjD;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,IAAI;IA8D9H,OAAO,CAAC,SAAS;IAqBjB,OAAO,IAAI,IAAI;CAQhB;AAID,2HAA2H;AAC3H,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAOpE"}
|
|
@@ -26,7 +26,7 @@ const OUTPUT_RENDER_STATE = {
|
|
|
26
26
|
cullMode: "none"
|
|
27
27
|
};
|
|
28
28
|
function variantCacheKey(key) {
|
|
29
|
-
return `${key.toneMapping}|${key.coverage ? 1 : 0}|${key.overlay ? 1 : 0}`;
|
|
29
|
+
return `${key.toneMapping}|${key.coverage ? 1 : 0}|${key.overlay ? 1 : 0}|${key.vignette ? 1 : 0}|${key.fullCoverage ? 1 : 0}`;
|
|
30
30
|
}
|
|
31
31
|
function createFullscreenTriangleGeometry() {
|
|
32
32
|
const vertices = new VertexBuffer(VertexFormat.P3, 3);
|
|
@@ -66,7 +66,14 @@ export class OutputPass {
|
|
|
66
66
|
const useCoverage = options.backgroundCoverage && coverage !== null;
|
|
67
67
|
const overlay = options.overlay ?? null;
|
|
68
68
|
const overlayActive = overlay !== null && overlayEnabledAmounts(overlay);
|
|
69
|
-
const
|
|
69
|
+
const vignette = options.vignette !== undefined && options.vignette.intensity > 0 ? options.vignette : null;
|
|
70
|
+
const key = {
|
|
71
|
+
toneMapping,
|
|
72
|
+
coverage: useCoverage,
|
|
73
|
+
overlay: overlay !== null,
|
|
74
|
+
vignette: vignette !== null,
|
|
75
|
+
fullCoverage: options.fullCoverage === true && !useCoverage
|
|
76
|
+
};
|
|
70
77
|
const cacheKey = variantCacheKey(key);
|
|
71
78
|
const shader = this.moduleFor(key).compile(this.device);
|
|
72
79
|
const uniforms = new Map();
|
|
@@ -77,6 +84,10 @@ export class OutputPass {
|
|
|
77
84
|
}
|
|
78
85
|
uniforms.set("u_exposure", options.exposure);
|
|
79
86
|
uniforms.set("u_dither", options.dithering ? 1 : 0);
|
|
87
|
+
if (vignette) {
|
|
88
|
+
uniforms.set("u_vignette", [vignette.intensity, vignette.smoothness, vignette.roundness, input.width / Math.max(1, input.height)]);
|
|
89
|
+
uniforms.set("u_vignetteColor", [vignette.color[0], vignette.color[1], vignette.color[2]]);
|
|
90
|
+
}
|
|
80
91
|
if (overlay) {
|
|
81
92
|
overlayUniforms(overlay, input.width / Math.max(1, input.height), overlayActive, uniforms);
|
|
82
93
|
}
|
|
@@ -120,7 +131,9 @@ export class OutputPass {
|
|
|
120
131
|
fragment: outputFragmentGlsl({
|
|
121
132
|
toneMapping: TONE_MAP_OPERATOR_FUNCTIONS[key.toneMapping] ? key.toneMapping : DEFAULT_TONE_MAPPING,
|
|
122
133
|
backgroundCoverage: key.coverage,
|
|
123
|
-
overlay: key.overlay
|
|
134
|
+
overlay: key.overlay,
|
|
135
|
+
vignette: key.vignette,
|
|
136
|
+
fullCoverage: key.fullCoverage
|
|
124
137
|
})
|
|
125
138
|
});
|
|
126
139
|
this.modules.set(cacheKey, module);
|
|
@@ -139,4 +152,14 @@ export class OutputPass {
|
|
|
139
152
|
this.drawCache.clear();
|
|
140
153
|
}
|
|
141
154
|
}
|
|
155
|
+
const outputPassesByDevice = new WeakMap();
|
|
156
|
+
/** The device's one OutputPass (one shader-variant cache), shared by the no-chain route and the PostGraph v2 OUT stage. */
|
|
157
|
+
export function outputPassForDevice(device) {
|
|
158
|
+
let pass = outputPassesByDevice.get(device);
|
|
159
|
+
if (!pass) {
|
|
160
|
+
pass = new OutputPass(device);
|
|
161
|
+
outputPassesByDevice.set(device, pass);
|
|
162
|
+
}
|
|
163
|
+
return pass;
|
|
164
|
+
}
|
|
142
165
|
//# sourceMappingURL=OutputPass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputPass.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/output/OutputPass.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAElH,mFAAmF;AACnF,MAAM,oBAAoB,GAAG,CAAC,GAAG,GAAG,CAAC;AAErC,MAAM,mBAAmB,GAAG;IAC1B,GAAG,oBAAoB;IACvB,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,MAAe;CAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"OutputPass.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/output/OutputPass.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,14 @@
|
|
|
11
11
|
export declare const OUTPUT_VERTEX_GLSL = "#version 300 es\n// a3d.output\nlayout(location = 0) in vec3 a_position;\nout vec2 v_uv;\nvoid main() {\n v_uv = a_position.xy * 0.5 + 0.5;\n gl_Position = vec4(a_position, 1.0);\n}\n";
|
|
12
12
|
export declare const TONE_MAPPING_OPERATORS_GLSL = "// r185 tonemapping_pars_fragment, exposure lines removed (PRD-01 \u00A78.6).\n// \"none\" is a pass-through (still clamped at the OETF); \"linear\" saturates.\nvec3 NoneToneMapping(vec3 color) { return color; }\nvec3 LinearToneMapping(vec3 color) { return saturate(color); }\n\n// source: https://www.cs.utah.edu/docs/techreports/2002/pdf/UUCS-02-001.pdf\nvec3 ReinhardToneMapping(vec3 color) {\n return saturate( color / ( vec3( 1.0 ) + color ) );\n}\n\n// source: https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs\nvec3 RRTAndODTFit( vec3 v ) {\n vec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n return a / b;\n}\n\n// this implementation of ACES is modified to accommodate a brighter viewing environment.\n// the scale factor of 1/0.6 is subjective. see discussion in #19621.\nvec3 ACESFilmicToneMapping( vec3 color ) {\n // sRGB => XYZ => D65_2_D60 => AP1 => RRT_SAT\n const mat3 ACESInputMat = mat3(\n vec3( 0.59719, 0.07600, 0.02840 ),\n vec3( 0.35458, 0.90834, 0.13383 ),\n vec3( 0.04823, 0.01566, 0.83777 )\n );\n // ODT_SAT => XYZ => D60_2_D65 => sRGB\n const mat3 ACESOutputMat = mat3(\n vec3( 1.60475, -0.10208, -0.00327 ),\n vec3( -0.53108, 1.10813, -0.07276 ),\n vec3( -0.07367, -0.00605, 1.07602 )\n );\n color /= 0.6; // exposure factor already applied by the caller\n color = ACESInputMat * color;\n color = RRTAndODTFit( color );\n color = ACESOutputMat * color;\n return saturate( color );\n}\n\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3( 1.6605, - 0.1246, - 0.0182 ),\n vec3( - 0.5876, 1.1329, - 0.1006 ),\n vec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3( 0.6274, 0.0691, 0.0164 ),\n vec3( 0.3293, 0.9195, 0.0880 ),\n vec3( 0.0433, 0.0113, 0.8956 )\n);\n\n// https://iolite-engine.com/blog_posts/minimal_agx_implementation\nvec3 agxDefaultContrastApprox( vec3 x ) {\n vec3 x2 = x * x;\n vec3 x4 = x2 * x2;\n return + 15.5 * x4 * x2\n - 40.14 * x4 * x\n + 31.96 * x4\n - 6.868 * x2 * x\n + 0.4298 * x2\n + 0.1191 * x\n - 0.00232;\n}\n\n// AgX Tone Mapping implementation based on Filament, which in turn is based\n// on Blender's implementation using rec 2020 primaries.\n// Inputs and outputs are encoded as Linear-sRGB.\nvec3 AgXToneMapping( vec3 color ) {\n const mat3 AgXInsetMatrix = mat3(\n vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n );\n const mat3 AgXOutsetMatrix = mat3(\n vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n );\n const float AgxMinEv = - 12.47393;\n const float AgxMaxEv = 4.026069;\n\n color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n color = AgXInsetMatrix * color;\n color = max( color, 1e-10 );\n color = log2( color );\n color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n color = clamp( color, 0.0, 1.0 );\n color = agxDefaultContrastApprox( color );\n color = AgXOutsetMatrix * color;\n color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n color = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n return clamp( color, 0.0, 1.0 );\n}\n\n// threejs-parity L7-02: Cineon (r185 CineonToneMapping, exposure removed).\n// Mirrors post/ToneOperators.ts:cineonToneMapping.\nvec3 CineonToneMapping( vec3 color ) {\n color = max( vec3( 0.0 ), color - 0.004 );\n return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\n\n// Khronos PBR Neutral (r185 body; exposure removed).\nvec3 NeutralToneMapping( vec3 color ) {\n const float StartCompression = 0.8 - 0.04;\n const float Desaturation = 0.15;\n float x = min( color.r, min( color.g, color.b ) );\n float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n color -= offset;\n float peak = max( color.r, max( color.g, color.b ) );\n if ( peak < StartCompression ) return color;\n float d = 1. - StartCompression;\n float newPeak = 1. - d * d / ( peak + d - StartCompression );\n color *= newPeak / peak;\n float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n return mix( color, vec3( newPeak ), g );\n}\n";
|
|
13
13
|
export declare const OUTPUT_FRAGMENT_PROLOGUE_GLSL = "// a3d.output\nprecision highp float;\nuniform sampler2D u_scene;\n#ifdef BACKGROUND_COVERAGE\nuniform sampler2D u_coverage;\n#endif\nuniform float u_exposure;\n// float, not int: the device uploads numeric uniforms with uniform1f, and\n// glUniform1f on an int uniform is GL_INVALID_OPERATION (#1140).\nuniform float u_dither;\nin vec2 v_uv;\nlayout(location = 0) out vec4 outColor;\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n";
|
|
14
|
-
export declare const OUTPUT_FRAGMENT_EPILOGUE_GLSL = "vec3 a3dLinearToSRGB(vec3 c) { return mix(c * 12.92, 1.055 * pow(c, vec3(1.0/2.4)) - 0.055, step(vec3(0.0031308), c)); }\n// PRD-01 triangular output dither (\u00B11 LSB, \u00A78.4 output step): the inverse triangular CDF of\n// interleaved gradient noise (Jimenez 2014). Same TPDF as two summed uniforms,\n// but low-discrepancy, so every 16-px row window spans > 1 LSB and banding\n// runs break (white sin-hash noise left 25-27 px runs, #1249 GPU).\nfloat a3dTriangularNoise(vec2 p) {\n float u = fract(52.9829189 * fract(dot(p, vec2(0.06711056, 0.00583715))));\n return u < 0.5 ? sqrt(2.0 * u) - 1.0 : 1.0 - sqrt(2.0 - 2.0 * u);\n}\n#ifdef OUTPUT_OVERLAY\nuniform vec4 u_overlayFlash; // rgb = linear color, a = amount 0..1 (additive)\nuniform vec4 u_overlayVignette; // rgb = linear color, a = amount 0..1\nuniform vec4 u_overlayShape; // x = inner radius, y = softness, z = aspect (w/h), w = enabled 0/1\nuniform vec4 u_overlayFade; // rgb = linear color, a = amount 0..1 (mix)\nvec3 a3dSrgbToLinear(vec3 c) {\n return mix(c / 12.92, pow((c + 0.055) / 1.055, vec3(2.4)), step(vec3(0.04045), c));\n}\n// Q-01-1 reference (PRD 09 \u00A78): decode \u2192 flash/vignette/fade \u2192 encode once.\n// Juice amounts are perceptual, applied in display-referred linear.\nvec3 a3dApplyOutputOverlay(vec3 encoded, vec2 uv) {\n if (u_overlayShape.w < 0.5) return encoded; // uniform branch; idle is bit-identical\n vec3 c = a3dSrgbToLinear(encoded);\n c += u_overlayFlash.rgb * u_overlayFlash.a;\n vec2 d = (uv - 0.5) * vec2(u_overlayShape.z, 1.0);\n float v = smoothstep(u_overlayShape.x, u_overlayShape.x + u_overlayShape.y, length(d));\n c = mix(c, u_overlayVignette.rgb, v * u_overlayVignette.a);\n c = mix(c, u_overlayFade.rgb, u_overlayFade.a);\n return a3dLinearToSRGB(clamp(c, 0.0, 1.0));\n}\n#endif\nvoid main() {\n vec4 scene = texture(u_scene, v_uv);\n // A single NaN/Inf texel (some GPUs propagate them where others flush to zero) must not turn the frame black.\n if (any(isnan(scene)) || any(isinf(scene))) scene = vec4(0.0);\n vec3 hdr = scene.rgb;\n // Coverage: drawn content is tone-mapped, the clear colour is not (three\n // r185: the clear is a raw glClear, tone mapping is per material). Without\n // the coverage attachment, HDR alpha carries it \u2014 cleared alpha 0, drawn 1.\n#ifdef BACKGROUND_COVERAGE\n float a3dCoverage = texture(u_coverage, v_uv).r;\n#else\n float a3dCoverage = clamp(scene.a, 0.0, 1.0);\n#endif\n vec3 display = mix(clamp(hdr, 0.0, 1.0), TONE_MAP(hdr * u_exposure), a3dCoverage);\n vec3 encoded = a3dLinearToSRGB(clamp(display, 0.0, 1.0));\n if (u_dither > 0.5) encoded += a3dTriangularNoise(gl_FragCoord.xy) / 255.0;\n#ifdef OUTPUT_OVERLAY\n encoded = a3dApplyOutputOverlay(encoded, v_uv);\n#endif\n outColor = vec4(encoded, 1.0);\n}\n";
|
|
14
|
+
export declare const OUTPUT_FRAGMENT_EPILOGUE_GLSL = "vec3 a3dLinearToSRGB(vec3 c) { return mix(c * 12.92, 1.055 * pow(c, vec3(1.0/2.4)) - 0.055, step(vec3(0.0031308), c)); }\n// PRD-01 triangular output dither (\u00B11 LSB, \u00A78.4 output step): the inverse triangular CDF of\n// interleaved gradient noise (Jimenez 2014). Same TPDF as two summed uniforms,\n// but low-discrepancy, so every 16-px row window spans > 1 LSB and banding\n// runs break (white sin-hash noise left 25-27 px runs, #1249 GPU).\nfloat a3dTriangularNoise(vec2 p) {\n float u = fract(52.9829189 * fract(dot(p, vec2(0.06711056, 0.00583715))));\n return u < 0.5 ? sqrt(2.0 * u) - 1.0 : 1.0 - sqrt(2.0 - 2.0 * u);\n}\n#ifdef OUTPUT_VIGNETTE\nuniform vec4 u_vignette; // x = intensity, y = smoothness, z = roundness, w = aspect (w/h)\nuniform vec3 u_vignetteColor; // linear multiplier at the frame edge\n// PostGraph v2: the vignette is a light falloff, so it multiplies linear light before exposure and the tone operator.\nvec3 a3dLinearVignette(vec3 color, vec2 uv) {\n vec2 p = (uv - 0.5) * 2.0;\n p.x *= u_vignette.w * u_vignette.z;\n float len = length(p) * u_vignette.x;\n return color * mix(vec3(1.0), u_vignetteColor, pow(clamp(len, 0.0, 1.0), u_vignette.y));\n}\n#endif\n#ifdef OUTPUT_OVERLAY\nuniform vec4 u_overlayFlash; // rgb = linear color, a = amount 0..1 (additive)\nuniform vec4 u_overlayVignette; // rgb = linear color, a = amount 0..1\nuniform vec4 u_overlayShape; // x = inner radius, y = softness, z = aspect (w/h), w = enabled 0/1\nuniform vec4 u_overlayFade; // rgb = linear color, a = amount 0..1 (mix)\nvec3 a3dSrgbToLinear(vec3 c) {\n return mix(c / 12.92, pow((c + 0.055) / 1.055, vec3(2.4)), step(vec3(0.04045), c));\n}\n// Q-01-1 reference (PRD 09 \u00A78): decode \u2192 flash/vignette/fade \u2192 encode once.\n// Juice amounts are perceptual, applied in display-referred linear.\nvec3 a3dApplyOutputOverlay(vec3 encoded, vec2 uv) {\n if (u_overlayShape.w < 0.5) return encoded; // uniform branch; idle is bit-identical\n vec3 c = a3dSrgbToLinear(encoded);\n c += u_overlayFlash.rgb * u_overlayFlash.a;\n vec2 d = (uv - 0.5) * vec2(u_overlayShape.z, 1.0);\n float v = smoothstep(u_overlayShape.x, u_overlayShape.x + u_overlayShape.y, length(d));\n c = mix(c, u_overlayVignette.rgb, v * u_overlayVignette.a);\n c = mix(c, u_overlayFade.rgb, u_overlayFade.a);\n return a3dLinearToSRGB(clamp(c, 0.0, 1.0));\n}\n#endif\nvoid main() {\n vec4 scene = texture(u_scene, v_uv);\n // A single NaN/Inf texel (some GPUs propagate them where others flush to zero) must not turn the frame black.\n if (any(isnan(scene)) || any(isinf(scene))) scene = vec4(0.0);\n vec3 hdr = scene.rgb;\n#ifdef OUTPUT_VIGNETTE\n hdr = a3dLinearVignette(hdr, v_uv);\n#endif\n // Coverage: drawn content is tone-mapped, the clear colour is not (three\n // r185: the clear is a raw glClear, tone mapping is per material). Without\n // the coverage attachment, HDR alpha carries it \u2014 cleared alpha 0, drawn 1.\n#ifdef BACKGROUND_COVERAGE\n float a3dCoverage = texture(u_coverage, v_uv).r;\n#elif defined(OUTPUT_FULL_COVERAGE)\n float a3dCoverage = 1.0;\n#else\n float a3dCoverage = clamp(scene.a, 0.0, 1.0);\n#endif\n vec3 display = mix(clamp(hdr, 0.0, 1.0), TONE_MAP(hdr * u_exposure), a3dCoverage);\n vec3 encoded = a3dLinearToSRGB(clamp(display, 0.0, 1.0));\n if (u_dither > 0.5) encoded += a3dTriangularNoise(gl_FragCoord.xy) / 255.0;\n#ifdef OUTPUT_OVERLAY\n encoded = a3dApplyOutputOverlay(encoded, v_uv);\n#endif\n outColor = vec4(encoded, 1.0);\n}\n";
|
|
15
15
|
export declare const TONE_MAP_OPERATOR_FUNCTIONS: Readonly<Record<string, string>>;
|
|
16
16
|
/** Compose the output fragment for one variant key. */
|
|
17
17
|
export declare function outputFragmentGlsl(options: {
|
|
18
18
|
toneMapping: string;
|
|
19
19
|
backgroundCoverage: boolean;
|
|
20
20
|
overlay: boolean;
|
|
21
|
+
vignette?: boolean;
|
|
22
|
+
fullCoverage?: boolean;
|
|
21
23
|
}): string;
|
|
22
24
|
//# sourceMappingURL=ToneMappingOperators.glsl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToneMappingOperators.glsl.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/output/ToneMappingOperators.glsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,kBAAkB,8LAQ9B,CAAC;AAEF,eAAO,MAAM,2BAA2B,22IAmHvC,CAAC;AAEF,eAAO,MAAM,6BAA6B,kbAazC,CAAC;AAEF,eAAO,MAAM,6BAA6B,
|
|
1
|
+
{"version":3,"file":"ToneMappingOperators.glsl.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/output/ToneMappingOperators.glsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,kBAAkB,8LAQ9B,CAAC;AAEF,eAAO,MAAM,2BAA2B,22IAmHvC,CAAC;AAEF,eAAO,MAAM,6BAA6B,kbAazC,CAAC;AAEF,eAAO,MAAM,6BAA6B,u8GAmEzC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxE,CAAC;AAEF,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAgBtK"}
|
|
@@ -156,6 +156,17 @@ float a3dTriangularNoise(vec2 p) {
|
|
|
156
156
|
float u = fract(52.9829189 * fract(dot(p, vec2(0.06711056, 0.00583715))));
|
|
157
157
|
return u < 0.5 ? sqrt(2.0 * u) - 1.0 : 1.0 - sqrt(2.0 - 2.0 * u);
|
|
158
158
|
}
|
|
159
|
+
#ifdef OUTPUT_VIGNETTE
|
|
160
|
+
uniform vec4 u_vignette; // x = intensity, y = smoothness, z = roundness, w = aspect (w/h)
|
|
161
|
+
uniform vec3 u_vignetteColor; // linear multiplier at the frame edge
|
|
162
|
+
// PostGraph v2: the vignette is a light falloff, so it multiplies linear light before exposure and the tone operator.
|
|
163
|
+
vec3 a3dLinearVignette(vec3 color, vec2 uv) {
|
|
164
|
+
vec2 p = (uv - 0.5) * 2.0;
|
|
165
|
+
p.x *= u_vignette.w * u_vignette.z;
|
|
166
|
+
float len = length(p) * u_vignette.x;
|
|
167
|
+
return color * mix(vec3(1.0), u_vignetteColor, pow(clamp(len, 0.0, 1.0), u_vignette.y));
|
|
168
|
+
}
|
|
169
|
+
#endif
|
|
159
170
|
#ifdef OUTPUT_OVERLAY
|
|
160
171
|
uniform vec4 u_overlayFlash; // rgb = linear color, a = amount 0..1 (additive)
|
|
161
172
|
uniform vec4 u_overlayVignette; // rgb = linear color, a = amount 0..1
|
|
@@ -182,11 +193,16 @@ void main() {
|
|
|
182
193
|
// A single NaN/Inf texel (some GPUs propagate them where others flush to zero) must not turn the frame black.
|
|
183
194
|
if (any(isnan(scene)) || any(isinf(scene))) scene = vec4(0.0);
|
|
184
195
|
vec3 hdr = scene.rgb;
|
|
196
|
+
#ifdef OUTPUT_VIGNETTE
|
|
197
|
+
hdr = a3dLinearVignette(hdr, v_uv);
|
|
198
|
+
#endif
|
|
185
199
|
// Coverage: drawn content is tone-mapped, the clear colour is not (three
|
|
186
200
|
// r185: the clear is a raw glClear, tone mapping is per material). Without
|
|
187
201
|
// the coverage attachment, HDR alpha carries it — cleared alpha 0, drawn 1.
|
|
188
202
|
#ifdef BACKGROUND_COVERAGE
|
|
189
203
|
float a3dCoverage = texture(u_coverage, v_uv).r;
|
|
204
|
+
#elif defined(OUTPUT_FULL_COVERAGE)
|
|
205
|
+
float a3dCoverage = 1.0;
|
|
190
206
|
#else
|
|
191
207
|
float a3dCoverage = clamp(scene.a, 0.0, 1.0);
|
|
192
208
|
#endif
|
|
@@ -214,7 +230,9 @@ export function outputFragmentGlsl(options) {
|
|
|
214
230
|
const defines = [
|
|
215
231
|
`#define TONE_MAP(c) ${fn}(c)`,
|
|
216
232
|
...(options.backgroundCoverage ? ["#define BACKGROUND_COVERAGE"] : []),
|
|
217
|
-
...(options.overlay ? ["#define OUTPUT_OVERLAY"] : [])
|
|
233
|
+
...(options.overlay ? ["#define OUTPUT_OVERLAY"] : []),
|
|
234
|
+
...(options.vignette ? ["#define OUTPUT_VIGNETTE"] : []),
|
|
235
|
+
...(options.fullCoverage && !options.backgroundCoverage ? ["#define OUTPUT_FULL_COVERAGE"] : [])
|
|
218
236
|
];
|
|
219
237
|
return [
|
|
220
238
|
"#version 300 es",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToneMappingOperators.glsl.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/output/ToneMappingOperators.glsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;CAQjC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH1C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;CAa5C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG
|
|
1
|
+
{"version":3,"file":"ToneMappingOperators.glsl.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/output/ToneMappingOperators.glsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;CAQjC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH1C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;CAa5C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmE5C,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAqC;IAC3E,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,mBAAmB;IAC3B,QAAQ,EAAE,qBAAqB;IAC/B,IAAI,EAAE,uBAAuB;IAC7B,GAAG,EAAE,gBAAgB;IACrB,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,mBAAmB;CAC5B,CAAC;AAEF,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAAC,OAA2H;IAC5J,MAAM,EAAE,GAAG,2BAA2B,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG;QACd,uBAAuB,EAAE,KAAK;QAC9B,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACjG,CAAC;IACF,OAAO;QACL,iBAAiB;QACjB,6BAA6B;QAC7B,GAAG,OAAO;QACV,2BAA2B;QAC3B,6BAA6B;KAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -33,6 +33,8 @@ import type { FrameCamera } from "../contracts/frameGraph.js";
|
|
|
33
33
|
import type { RenderItem } from "../ForwardPass.js";
|
|
34
34
|
import type { Texture } from "../Texture.js";
|
|
35
35
|
import type { TemporalGpuBindings } from "../TemporalHistory.js";
|
|
36
|
+
import { vignetteColorRgb } from "./vignetteColor.js";
|
|
37
|
+
export { vignetteColorRgb };
|
|
36
38
|
/**
|
|
37
39
|
* God-ray tint as an RGB triple. The engine bridge compiles
|
|
38
40
|
* `effects.volumetricFog({ color })` to a `{ r, g, b }` object, while direct
|
|
@@ -153,13 +155,6 @@ frameContext?: PostFrameContextBag, options?: RunV2HdrStagesOptions): {
|
|
|
153
155
|
*/
|
|
154
156
|
export declare const AO_FALLBACK_STRENGTH_MAX = 0.1;
|
|
155
157
|
export declare function aoFallbackStrength(authored: number | undefined): number;
|
|
156
|
-
/**
|
|
157
|
-
* Vignette colour as a finite RGB triple. The engine post bridge emits
|
|
158
|
-
* `{ r, g, b }` (rgbField) while older callers pass `[r, g, b]`; indexing the
|
|
159
|
-
* object form gave `undefined` → NaN uniforms, and `mix(1, NaN, t)` turned the
|
|
160
|
-
* whole frame black whenever a scene authored `effects.vignette()`.
|
|
161
|
-
*/
|
|
162
|
-
export declare function vignetteColorRgb(color: unknown): [number, number, number];
|
|
163
158
|
/** True when S10b/S11/S12 need a real LDR tail after the fused present. */
|
|
164
159
|
export declare function v2NeedsLdrTail(pipeline: PostPipelineOptions): boolean;
|
|
165
160
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2Stages.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/post/v2Stages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGvE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"v2Stages.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/post/v2Stages.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,7 @@ import { GODRAYS_GLSL } from "./shaders/godrays.glsl.js";
|
|
|
41
41
|
import { CA_PASS_GLSL } from "./shaders/composite.glsl.js";
|
|
42
42
|
import { DISPLAY_GRADE_GLSL } from "./shaders/displayGrade.glsl.js";
|
|
43
43
|
import { FINALIZE_FXAA_FUSED_GLSL, FINALIZE_GLSL } from "./shaders/finalize.glsl.js";
|
|
44
|
+
import { vignetteColorRgb } from "./vignetteColor.js";
|
|
44
45
|
import { VELOCITY_DILATE_GLSL } from "./shaders/velocityDilate.glsl.js";
|
|
45
46
|
import { TAA_RESOLVE_GLSL, TAA_UPSCALE_GLSL } from "./shaders/taa.glsl.js";
|
|
46
47
|
import { DOF_COMPOSITE_GLSL, DOF_GATHER_GLSL, DOF_NEAR_TILE_GLSL, DOF_PREFILTER_GLSL } from "./shaders/dof.glsl.js";
|
|
@@ -49,6 +50,7 @@ import { EXPOSURE_ADAPT_GLSL, EXPOSURE_LUMA_LOG_GLSL, EXPOSURE_MUL_GLSL, EXPOSUR
|
|
|
49
50
|
import { SMAA_BLEND_GLSL, SMAA_EDGES_GLSL, SMAA_WEIGHTS_GLSL } from "./shaders/smaa.glsl.js";
|
|
50
51
|
import { FXAA_185_FRAGMENT_GLSL } from "./shaders/fxaa.glsl.js";
|
|
51
52
|
import { POST_INSERT_ANCHORS } from "./PostGraph.js";
|
|
53
|
+
export { vignetteColorRgb };
|
|
52
54
|
/** Identity for the folded camera-velocity reprojection (S1-C). */
|
|
53
55
|
const IDENTITY_MAT4_F32 = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
|
|
54
56
|
const VERTEX = `#version 300 es
|
|
@@ -1045,23 +1047,6 @@ export function aoFallbackStrength(authored) {
|
|
|
1045
1047
|
const v = authored ?? AO_FALLBACK_STRENGTH_MAX;
|
|
1046
1048
|
return Math.min(Math.max(Number.isFinite(v) ? v : 0, 0), AO_FALLBACK_STRENGTH_MAX);
|
|
1047
1049
|
}
|
|
1048
|
-
/**
|
|
1049
|
-
* Vignette colour as a finite RGB triple. The engine post bridge emits
|
|
1050
|
-
* `{ r, g, b }` (rgbField) while older callers pass `[r, g, b]`; indexing the
|
|
1051
|
-
* object form gave `undefined` → NaN uniforms, and `mix(1, NaN, t)` turned the
|
|
1052
|
-
* whole frame black whenever a scene authored `effects.vignette()`.
|
|
1053
|
-
*/
|
|
1054
|
-
export function vignetteColorRgb(color) {
|
|
1055
|
-
let rgb = [0, 0, 0];
|
|
1056
|
-
if (Array.isArray(color))
|
|
1057
|
-
rgb = [color[0], color[1], color[2]];
|
|
1058
|
-
else if (color && typeof color === "object" && "r" in color) {
|
|
1059
|
-
const c = color;
|
|
1060
|
-
rgb = [c.r, c.g, c.b];
|
|
1061
|
-
}
|
|
1062
|
-
const finite = (v) => (typeof v === "number" && Number.isFinite(v) ? v : 0);
|
|
1063
|
-
return [finite(rgb[0]), finite(rgb[1]), finite(rgb[2])];
|
|
1064
|
-
}
|
|
1065
1050
|
/** True when S10b/S11/S12 need a real LDR tail after the fused present. */
|
|
1066
1051
|
export function v2NeedsLdrTail(pipeline) {
|
|
1067
1052
|
const displayCustoms = mergedCustomPasses(pipeline).some((pass) => pass.insertAt === "after-tonemap");
|