From 22376f06881b7481762c4471d56ee9312ff92fe1 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Mon, 17 Aug 2026 21:27:55 -0400 Subject: [PATCH 1/2] Update three.js --- three.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/three.js b/three.js index 65692ef39..3c85f70db 160000 --- a/three.js +++ b/three.js @@ -1 +1 @@ -Subproject commit 65692ef39af4b01ff84969e6b1e410e45333b647 +Subproject commit 3c85f70db96439a29008d9f0c36aea373ec24daf From 765efac72c269449939a9265df7b4907ff1e7b1f Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Mon, 17 Aug 2026 21:30:03 -0400 Subject: [PATCH 2/2] Inspector: Add Color Grading extension and improve lifecycle API --- .../examples/jsm/inspector/Extension.d.ts | 13 ++++++++ .../examples/jsm/inspector/Inspector.d.ts | 13 +++++++- .../color-grading/ColorGrading.d.ts | 31 +++++++++++++++++++ .../three/examples/jsm/inspector/ui/Tab.d.ts | 2 ++ 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 types/three/examples/jsm/inspector/extensions/color-grading/ColorGrading.d.ts diff --git a/types/three/examples/jsm/inspector/Extension.d.ts b/types/three/examples/jsm/inspector/Extension.d.ts index 6a6a383a0..6a67dd2f1 100644 --- a/types/three/examples/jsm/inspector/Extension.d.ts +++ b/types/three/examples/jsm/inspector/Extension.d.ts @@ -1,3 +1,4 @@ +import { Inspector, InspectorLayoutEvent } from "./Inspector.js"; import { Tab, TabEventMap } from "./ui/Tab.js"; export interface ExtensionEventMap extends TabEventMap {} @@ -6,4 +7,16 @@ export class Extension readonly isExtension: boolean; constructor(name: string); + + init(inspector: Inspector): void; + + serialize(): object | null; + deserialize(data: object): void; + + save(): void; + + dispose(): void; + + onOrientationChange(event?: InspectorLayoutEvent): void; + onLayoutChange(event?: InspectorLayoutEvent): void; } diff --git a/types/three/examples/jsm/inspector/Inspector.d.ts b/types/three/examples/jsm/inspector/Inspector.d.ts index b4dbda270..907dd3346 100644 --- a/types/three/examples/jsm/inspector/Inspector.d.ts +++ b/types/three/examples/jsm/inspector/Inspector.d.ts @@ -1,10 +1,18 @@ +import { ColorGrading } from "./extensions/color-grading/ColorGrading.js"; import { TSLGraphEditor } from "./extensions/tsl-graph/TSLGraphEditor.js"; import { RendererInspector, RendererInspectorEventMap } from "./RendererInspector.js"; import { ParametersGroup } from "./tabs/Parameters.js"; import { Tab } from "./ui/Tab.js"; +export interface InspectorLayoutEvent { + position: "bottom" | "right"; + isVertical: boolean; +} + export interface InspectorEventMap extends RendererInspectorEventMap { resize: {}; + orientationchange: InspectorLayoutEvent; + layoutchange: InspectorLayoutEvent; } declare class Inspector extends RendererInspector { @@ -12,6 +20,7 @@ declare class Inspector extends RendererInspector { get domElement(): HTMLDivElement; + onExtension(name: "Color Grading", callback: (extension: ColorGrading) => void): this; onExtension(name: "TSL Graph", callback: (extension: TSLGraphEditor) => void): this; hide(): void; @@ -22,6 +31,8 @@ declare class Inspector extends RendererInspector { getSize(): { width: number; height: number }; + isVertical(): boolean; + setHorizontalAlign(value: "left" | "right"): this; setVerticalAlign(value: "top" | "bottom"): this; @@ -29,7 +40,7 @@ declare class Inspector extends RendererInspector { addTab(tab: Tab): this; removeTab(tab: Tab): this; - setActiveExtension(name: "TSL Graph", value: boolean): this; + setActiveExtension(name: "Color Grading" | "TSL Graph", value: boolean): this; } export { Inspector }; diff --git a/types/three/examples/jsm/inspector/extensions/color-grading/ColorGrading.d.ts b/types/three/examples/jsm/inspector/extensions/color-grading/ColorGrading.d.ts new file mode 100644 index 000000000..706309288 --- /dev/null +++ b/types/three/examples/jsm/inspector/extensions/color-grading/ColorGrading.d.ts @@ -0,0 +1,31 @@ +import { ToneMapping } from "../../../../../src/constants.js"; +import { Data3DTexture } from "../../../../../src/textures/Data3DTexture.js"; +import { Extension } from "../../Extension.js"; + +export interface ColorGradingJSON { + version: number; + lutSize: number; + selectedToneMapping: ToneMapping; + sceneGradingEnabled: boolean; + pipelineOrder: string[]; + modules: { [id: string]: unknown }; + params: { [name: string]: unknown }; +} + +export class ColorGrading extends Extension { + constructor(); + + lutSize: number; + lutTexture: Data3DTexture | null; + sceneGradingEnabled: boolean; + selectedToneMapping: ToneMapping; + + generate3DLUTData(size?: number, buffer?: Float32Array | null): Float32Array; + + toJSON(): ColorGradingJSON; + + serialize(): ColorGradingJSON; + deserialize(data: ColorGradingJSON): void; + + load(data: ColorGradingJSON | string): void; +} diff --git a/types/three/examples/jsm/inspector/ui/Tab.d.ts b/types/three/examples/jsm/inspector/ui/Tab.d.ts index e45d2c9db..f9266198b 100644 --- a/types/three/examples/jsm/inspector/ui/Tab.d.ts +++ b/types/three/examples/jsm/inspector/ui/Tab.d.ts @@ -4,4 +4,6 @@ export interface TabEventMap {} export class Tab extends EventDispatcher { constructor(title: string); + + dispose(): void; }