@onerjs/core 8.28.1 → 8.28.2
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/Collisions/gpuPicker.d.ts +40 -16
- package/Collisions/gpuPicker.js +216 -95
- package/Collisions/gpuPicker.js.map +1 -1
- package/Decorators/nodeDecorator.d.ts +5 -1
- package/Decorators/nodeDecorator.js +4 -0
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.d.ts +30 -0
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js +56 -0
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.d.ts +32 -0
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js +62 -0
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.d.ts +36 -0
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js +88 -0
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/index.d.ts +3 -0
- package/FrameGraph/Node/Blocks/index.js +3 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/colorCorrectionTask.d.ts +17 -0
- package/FrameGraph/Tasks/PostProcesses/colorCorrectionTask.js +18 -0
- package/FrameGraph/Tasks/PostProcesses/colorCorrectionTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/filterTask.d.ts +16 -0
- package/FrameGraph/Tasks/PostProcesses/filterTask.js +17 -0
- package/FrameGraph/Tasks/PostProcesses/filterTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/tonemapTask.d.ts +16 -0
- package/FrameGraph/Tasks/PostProcesses/tonemapTask.js +17 -0
- package/FrameGraph/Tasks/PostProcesses/tonemapTask.js.map +1 -0
- package/FrameGraph/index.d.ts +3 -0
- package/FrameGraph/index.js +3 -0
- package/FrameGraph/index.js.map +1 -1
- package/Materials/effect.d.ts +1 -0
- package/Materials/effect.js +7 -1
- package/Materials/effect.js.map +1 -1
- package/Physics/v2/physicsAggregate.js +4 -3
- package/Physics/v2/physicsAggregate.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.d.ts +3 -3
- package/PostProcesses/colorCorrectionPostProcess.js +21 -21
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.d.ts +4 -2
- package/PostProcesses/filterPostProcess.js +22 -15
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/index.d.ts +3 -0
- package/PostProcesses/index.js +3 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/thinColorCorrectionPostProcess.d.ts +30 -0
- package/PostProcesses/thinColorCorrectionPostProcess.js +52 -0
- package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -0
- package/PostProcesses/thinFilterPostProcess.d.ts +29 -0
- package/PostProcesses/thinFilterPostProcess.js +51 -0
- package/PostProcesses/thinFilterPostProcess.js.map +1 -0
- package/PostProcesses/thinTonemapPostProcess.d.ts +52 -0
- package/PostProcesses/thinTonemapPostProcess.js +83 -0
- package/PostProcesses/thinTonemapPostProcess.js.map +1 -0
- package/PostProcesses/tonemapPostProcess.d.ts +23 -21
- package/PostProcesses/tonemapPostProcess.js +55 -46
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/Shaders/picking.fragment.js +20 -6
- package/Shaders/picking.fragment.js.map +1 -1
- package/Shaders/picking.vertex.js +4 -3
- package/Shaders/picking.vertex.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +11 -6
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/ShadersWGSL/picking.vertex.js +4 -3
- package/ShadersWGSL/picking.vertex.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
+
import { Engine } from "../Engines/engine.js";
|
|
3
|
+
/** Defines operator used for tonemapping */
|
|
4
|
+
export var TonemappingOperator;
|
|
5
|
+
(function (TonemappingOperator) {
|
|
6
|
+
/** Hable */
|
|
7
|
+
TonemappingOperator[TonemappingOperator["Hable"] = 0] = "Hable";
|
|
8
|
+
/** Reinhard */
|
|
9
|
+
TonemappingOperator[TonemappingOperator["Reinhard"] = 1] = "Reinhard";
|
|
10
|
+
/** HejiDawson */
|
|
11
|
+
TonemappingOperator[TonemappingOperator["HejiDawson"] = 2] = "HejiDawson";
|
|
12
|
+
/** Photographic */
|
|
13
|
+
TonemappingOperator[TonemappingOperator["Photographic"] = 3] = "Photographic";
|
|
14
|
+
})(TonemappingOperator || (TonemappingOperator = {}));
|
|
15
|
+
/**
|
|
16
|
+
* Post process used to apply a tone mapping operator
|
|
17
|
+
*/
|
|
18
|
+
export class ThinTonemapPostProcess extends EffectWrapper {
|
|
19
|
+
_gatherImports(useWebGPU, list) {
|
|
20
|
+
if (useWebGPU) {
|
|
21
|
+
this._webGPUReady = true;
|
|
22
|
+
list.push(import("../ShadersWGSL/tonemap.fragment.js"));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
list.push(import("../Shaders/tonemap.fragment.js"));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new tone mapping post process
|
|
30
|
+
* @param name Name of the effect
|
|
31
|
+
* @param engine Engine to use to render the effect. If not provided, the last created engine will be used
|
|
32
|
+
* @param options Options to configure the effect
|
|
33
|
+
*/
|
|
34
|
+
constructor(name, engine = null, options) {
|
|
35
|
+
const operator = options?.operator ?? 1 /* TonemappingOperator.Reinhard */;
|
|
36
|
+
let defines = "#define ";
|
|
37
|
+
if (operator === 0 /* TonemappingOperator.Hable */) {
|
|
38
|
+
defines += "HABLE_TONEMAPPING";
|
|
39
|
+
}
|
|
40
|
+
else if (operator === 1 /* TonemappingOperator.Reinhard */) {
|
|
41
|
+
defines += "REINHARD_TONEMAPPING";
|
|
42
|
+
}
|
|
43
|
+
else if (operator === 2 /* TonemappingOperator.HejiDawson */) {
|
|
44
|
+
defines += "OPTIMIZED_HEJIDAWSON_TONEMAPPING";
|
|
45
|
+
}
|
|
46
|
+
else if (operator === 3 /* TonemappingOperator.Photographic */) {
|
|
47
|
+
defines += "PHOTOGRAPHIC_TONEMAPPING";
|
|
48
|
+
}
|
|
49
|
+
super({
|
|
50
|
+
...options,
|
|
51
|
+
name,
|
|
52
|
+
engine: engine || Engine.LastCreatedEngine,
|
|
53
|
+
useShaderStore: true,
|
|
54
|
+
useAsPostProcess: true,
|
|
55
|
+
fragmentShader: ThinTonemapPostProcess.FragmentUrl,
|
|
56
|
+
uniforms: ThinTonemapPostProcess.Uniforms,
|
|
57
|
+
defines,
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Gets the operator to use (default: Reinhard)
|
|
61
|
+
*/
|
|
62
|
+
this.operator = 1 /* TonemappingOperator.Reinhard */;
|
|
63
|
+
/**
|
|
64
|
+
* Defines the required exposure adjustment (default: 1.0)
|
|
65
|
+
*/
|
|
66
|
+
this.exposureAdjustment = 1;
|
|
67
|
+
this.operator = operator;
|
|
68
|
+
this.exposureAdjustment = options?.exposureAdjustment ?? 1;
|
|
69
|
+
}
|
|
70
|
+
bind(noDefaultBindings = false) {
|
|
71
|
+
super.bind(noDefaultBindings);
|
|
72
|
+
this._drawWrapper.effect.setFloat("_ExposureAdjustment", this.exposureAdjustment);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The fragment shader url
|
|
77
|
+
*/
|
|
78
|
+
ThinTonemapPostProcess.FragmentUrl = "tonemap";
|
|
79
|
+
/**
|
|
80
|
+
* The list of uniforms used by the effect
|
|
81
|
+
*/
|
|
82
|
+
ThinTonemapPostProcess.Uniforms = ["_ExposureAdjustment"];
|
|
83
|
+
//# sourceMappingURL=thinTonemapPostProcess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinTonemapPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinTonemapPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,4CAA4C;AAC5C,MAAM,CAAN,IAAkB,mBASjB;AATD,WAAkB,mBAAmB;IACjC,YAAY;IACZ,+DAAS,CAAA;IACT,eAAe;IACf,qEAAY,CAAA;IACZ,iBAAiB;IACjB,yEAAc,CAAA;IACd,mBAAmB;IACnB,6EAAgB,CAAA;AACpB,CAAC,EATiB,mBAAmB,KAAnB,mBAAmB,QASpC;AAcD;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAWlC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAuC;QACtG,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,wCAAgC,CAAC;QAEnE,IAAI,OAAO,GAAG,UAAU,CAAC;QAEzB,IAAI,QAAQ,sCAA8B,EAAE,CAAC;YACzC,OAAO,IAAI,mBAAmB,CAAC;QACnC,CAAC;aAAM,IAAI,QAAQ,yCAAiC,EAAE,CAAC;YACnD,OAAO,IAAI,sBAAsB,CAAC;QACtC,CAAC;aAAM,IAAI,QAAQ,2CAAmC,EAAE,CAAC;YACrD,OAAO,IAAI,kCAAkC,CAAC;QAClD,CAAC;aAAM,IAAI,QAAQ,6CAAqC,EAAE,CAAC;YACvD,OAAO,IAAI,0BAA0B,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,iBAAkB;YAC3C,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,sBAAsB,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;YACzC,OAAO;SACV,CAAC,CAAC;QAMP;;WAEG;QACa,aAAQ,wCAAqD;QAE7E;;WAEG;QACI,uBAAkB,GAAG,CAAC,CAAC;QAZ1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,CAAC,CAAC;IAC/D,CAAC;IAYe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvF,CAAC;;AApED;;GAEG;AACoB,kCAAW,GAAG,SAAS,AAAZ,CAAa;AAE/C;;GAEG;AACoB,+BAAQ,GAAG,CAAC,qBAAqB,CAAC,AAA1B,CAA2B","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { Engine } from \"../Engines/engine\";\r\n\r\n/** Defines operator used for tonemapping */\r\nexport const enum TonemappingOperator {\r\n /** Hable */\r\n Hable = 0,\r\n /** Reinhard */\r\n Reinhard = 1,\r\n /** HejiDawson */\r\n HejiDawson = 2,\r\n /** Photographic */\r\n Photographic = 3,\r\n}\r\n\r\n/**\r\n * Options used to create a ThinTonemapPostProcess.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface ThinTonemapPostProcessOptions extends EffectWrapperCreationOptions {\r\n /** Defines the operator to use (default: Reinhard) */\r\n operator?: TonemappingOperator;\r\n\r\n /** Defines the required exposure adjustment (default: 1.0) */\r\n exposureAdjustment?: number;\r\n}\r\n\r\n/**\r\n * Post process used to apply a tone mapping operator\r\n */\r\nexport class ThinTonemapPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"tonemap\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"_ExposureAdjustment\"];\r\n\r\n protected override _gatherImports(useWebGPU: boolean, list: Promise<any>[]) {\r\n if (useWebGPU) {\r\n this._webGPUReady = true;\r\n list.push(import(\"../ShadersWGSL/tonemap.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/tonemap.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new tone mapping post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: ThinTonemapPostProcessOptions) {\r\n const operator = options?.operator ?? TonemappingOperator.Reinhard;\r\n\r\n let defines = \"#define \";\r\n\r\n if (operator === TonemappingOperator.Hable) {\r\n defines += \"HABLE_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.Reinhard) {\r\n defines += \"REINHARD_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.HejiDawson) {\r\n defines += \"OPTIMIZED_HEJIDAWSON_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.Photographic) {\r\n defines += \"PHOTOGRAPHIC_TONEMAPPING\";\r\n }\r\n\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || Engine.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinTonemapPostProcess.FragmentUrl,\r\n uniforms: ThinTonemapPostProcess.Uniforms,\r\n defines,\r\n });\r\n\r\n this.operator = operator;\r\n this.exposureAdjustment = options?.exposureAdjustment ?? 1;\r\n }\r\n\r\n /**\r\n * Gets the operator to use (default: Reinhard)\r\n */\r\n public readonly operator: TonemappingOperator = TonemappingOperator.Reinhard;\r\n\r\n /**\r\n * Defines the required exposure adjustment (default: 1.0)\r\n */\r\n public exposureAdjustment = 1;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n this._drawWrapper.effect!.setFloat(\"_ExposureAdjustment\", this.exposureAdjustment);\r\n }\r\n}\r\n"]}
|
|
@@ -1,43 +1,45 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Camera } from "../Cameras/camera.js";
|
|
2
|
+
import type { PostProcessOptions } from "./postProcess.js";
|
|
2
3
|
import { PostProcess } from "./postProcess.js";
|
|
3
4
|
import type { Nullable } from "../types.js";
|
|
4
5
|
import type { AbstractEngine } from "../Engines/abstractEngine.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
/** Reinhard */
|
|
10
|
-
Reinhard = 1,
|
|
11
|
-
/** HejiDawson */
|
|
12
|
-
HejiDawson = 2,
|
|
13
|
-
/** Photographic */
|
|
14
|
-
Photographic = 3
|
|
15
|
-
}
|
|
6
|
+
import type { ThinTonemapPostProcessOptions, TonemappingOperator } from "./thinTonemapPostProcess.js";
|
|
7
|
+
import { ThinTonemapPostProcess } from "./thinTonemapPostProcess.js";
|
|
8
|
+
import type { Scene } from "../scene.js";
|
|
9
|
+
export type ToneMapPostProcessOptions = ThinTonemapPostProcessOptions & PostProcessOptions;
|
|
16
10
|
/**
|
|
17
11
|
* Defines a post process to apply tone mapping
|
|
18
12
|
*/
|
|
19
13
|
export declare class TonemapPostProcess extends PostProcess {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Defines the required exposure adjustment
|
|
16
|
+
*/
|
|
17
|
+
get exposureAdjustment(): number;
|
|
18
|
+
set exposureAdjustment(value: number);
|
|
19
|
+
/**
|
|
20
|
+
* Gets the operator used for tonemapping
|
|
21
|
+
*/
|
|
22
|
+
get operator(): TonemappingOperator;
|
|
23
23
|
/**
|
|
24
24
|
* Gets a string identifying the name of the class
|
|
25
25
|
* @returns "TonemapPostProcess" string
|
|
26
26
|
*/
|
|
27
27
|
getClassName(): string;
|
|
28
|
+
protected _effectWrapper: ThinTonemapPostProcess;
|
|
28
29
|
/**
|
|
29
30
|
* Creates a new TonemapPostProcess
|
|
30
31
|
* @param name defines the name of the postprocess
|
|
31
|
-
* @param
|
|
32
|
+
* @param operator defines the operator to use
|
|
32
33
|
* @param exposureAdjustment defines the required exposure adjustment
|
|
33
34
|
* @param camera defines the camera to use (can be null)
|
|
34
35
|
* @param samplingMode defines the required sampling mode (BABYLON.Texture.BILINEAR_SAMPLINGMODE by default)
|
|
35
36
|
* @param engine defines the hosting engine (can be ignore if camera is set)
|
|
36
|
-
* @param
|
|
37
|
+
* @param textureType defines the texture format to use (BABYLON.Engine.TEXTURETYPE_UNSIGNED_BYTE by default)
|
|
37
38
|
* @param reusable If the post process can be reused on the same frame. (default: false)
|
|
38
39
|
*/
|
|
39
|
-
constructor(name: string,
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
constructor(name: string, operator: TonemappingOperator, exposureAdjustment: number, camera: Nullable<Camera> | ToneMapPostProcessOptions, samplingMode?: number, engine?: AbstractEngine, textureType?: number, reusable?: boolean);
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
static _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<TonemapPostProcess>;
|
|
43
45
|
}
|
|
@@ -1,21 +1,30 @@
|
|
|
1
|
+
import { __decorate } from "../tslib.es6.js";
|
|
2
|
+
import { Camera } from "../Cameras/camera.js";
|
|
1
3
|
import { PostProcess } from "./postProcess.js";
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
TonemappingOperator[TonemappingOperator["Hable"] = 0] = "Hable";
|
|
8
|
-
/** Reinhard */
|
|
9
|
-
TonemappingOperator[TonemappingOperator["Reinhard"] = 1] = "Reinhard";
|
|
10
|
-
/** HejiDawson */
|
|
11
|
-
TonemappingOperator[TonemappingOperator["HejiDawson"] = 2] = "HejiDawson";
|
|
12
|
-
/** Photographic */
|
|
13
|
-
TonemappingOperator[TonemappingOperator["Photographic"] = 3] = "Photographic";
|
|
14
|
-
})(TonemappingOperator || (TonemappingOperator = {}));
|
|
5
|
+
import { RegisterClass } from "../Misc/typeStore.js";
|
|
6
|
+
import { serialize } from "../Misc/decorators.js";
|
|
7
|
+
import { SerializationHelper } from "../Misc/decorators.serialization.js";
|
|
8
|
+
import { ThinTonemapPostProcess } from "./thinTonemapPostProcess.js";
|
|
15
9
|
/**
|
|
16
10
|
* Defines a post process to apply tone mapping
|
|
17
11
|
*/
|
|
18
12
|
export class TonemapPostProcess extends PostProcess {
|
|
13
|
+
/**
|
|
14
|
+
* Defines the required exposure adjustment
|
|
15
|
+
*/
|
|
16
|
+
get exposureAdjustment() {
|
|
17
|
+
return this._effectWrapper.exposureAdjustment;
|
|
18
|
+
}
|
|
19
|
+
set exposureAdjustment(value) {
|
|
20
|
+
this._effectWrapper.exposureAdjustment = value;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets the operator used for tonemapping
|
|
24
|
+
*/
|
|
25
|
+
get operator() {
|
|
26
|
+
return this._effectWrapper.operator;
|
|
27
|
+
}
|
|
19
28
|
/**
|
|
20
29
|
* Gets a string identifying the name of the class
|
|
21
30
|
* @returns "TonemapPostProcess" string
|
|
@@ -26,48 +35,48 @@ export class TonemapPostProcess extends PostProcess {
|
|
|
26
35
|
/**
|
|
27
36
|
* Creates a new TonemapPostProcess
|
|
28
37
|
* @param name defines the name of the postprocess
|
|
29
|
-
* @param
|
|
38
|
+
* @param operator defines the operator to use
|
|
30
39
|
* @param exposureAdjustment defines the required exposure adjustment
|
|
31
40
|
* @param camera defines the camera to use (can be null)
|
|
32
41
|
* @param samplingMode defines the required sampling mode (BABYLON.Texture.BILINEAR_SAMPLINGMODE by default)
|
|
33
42
|
* @param engine defines the hosting engine (can be ignore if camera is set)
|
|
34
|
-
* @param
|
|
43
|
+
* @param textureType defines the texture format to use (BABYLON.Engine.TEXTURETYPE_UNSIGNED_BYTE by default)
|
|
35
44
|
* @param reusable If the post process can be reused on the same frame. (default: false)
|
|
36
45
|
*/
|
|
37
|
-
constructor(name,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
defines += "REINHARD_TONEMAPPING";
|
|
49
|
-
}
|
|
50
|
-
else if (this._operator === 2 /* TonemappingOperator.HejiDawson */) {
|
|
51
|
-
defines += "OPTIMIZED_HEJIDAWSON_TONEMAPPING";
|
|
52
|
-
}
|
|
53
|
-
else if (this._operator === 3 /* TonemappingOperator.Photographic */) {
|
|
54
|
-
defines += "PHOTOGRAPHIC_TONEMAPPING";
|
|
55
|
-
}
|
|
56
|
-
//sadly a second call to create the effect.
|
|
57
|
-
this.updateEffect(defines);
|
|
58
|
-
this.onApply = (effect) => {
|
|
59
|
-
effect.setFloat("_ExposureAdjustment", this.exposureAdjustment);
|
|
46
|
+
constructor(name, operator, exposureAdjustment, camera, samplingMode = 2, engine, textureType = 0, reusable) {
|
|
47
|
+
const cameraIsCamera = camera === null || camera instanceof Camera;
|
|
48
|
+
const localOptions = {
|
|
49
|
+
operator,
|
|
50
|
+
exposureAdjustment,
|
|
51
|
+
uniforms: ThinTonemapPostProcess.Uniforms,
|
|
52
|
+
camera: cameraIsCamera ? camera : undefined,
|
|
53
|
+
samplingMode,
|
|
54
|
+
engine,
|
|
55
|
+
reusable,
|
|
56
|
+
textureType,
|
|
60
57
|
};
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (useWebGPU) {
|
|
64
|
-
this._webGPUReady = true;
|
|
65
|
-
list.push(Promise.all([import("../ShadersWGSL/tonemap.fragment.js")]));
|
|
58
|
+
if (!cameraIsCamera) {
|
|
59
|
+
Object.assign(localOptions, camera);
|
|
66
60
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
61
|
+
super(name, ThinTonemapPostProcess.FragmentUrl, {
|
|
62
|
+
effectWrapper: cameraIsCamera || !camera.effectWrapper ? new ThinTonemapPostProcess(name, engine, localOptions) : undefined,
|
|
63
|
+
...localOptions,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
static _Parse(parsedPostProcess, targetCamera, scene, rootUrl) {
|
|
70
|
+
return SerializationHelper.Parse(() => {
|
|
71
|
+
return new TonemapPostProcess(parsedPostProcess.name, parsedPostProcess.operator, parsedPostProcess.exposureAdjustment, targetCamera, parsedPostProcess.renderTargetSamplingMode, scene.getEngine(), parsedPostProcess.textureType, parsedPostProcess.reusable);
|
|
72
|
+
}, parsedPostProcess, scene, rootUrl);
|
|
71
73
|
}
|
|
72
74
|
}
|
|
75
|
+
__decorate([
|
|
76
|
+
serialize()
|
|
77
|
+
], TonemapPostProcess.prototype, "exposureAdjustment", null);
|
|
78
|
+
__decorate([
|
|
79
|
+
serialize()
|
|
80
|
+
], TonemapPostProcess.prototype, "operator", null);
|
|
81
|
+
RegisterClass("BABYLON.TonemapPostProcess", TonemapPostProcess);
|
|
73
82
|
//# sourceMappingURL=tonemapPostProcess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tonemapPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/tonemapPostProcess.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tonemapPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/tonemapPostProcess.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAKvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAKlE;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAC/C;;OAEG;IAEH,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;IAClD,CAAC;IAED,IAAW,kBAAkB,CAAC,KAAa;QACvC,IAAI,CAAC,cAAc,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACnD,CAAC;IAED;;OAEG;IAEH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;IACxC,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,oBAAoB,CAAC;IAChC,CAAC;IAID;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,QAA6B,EAC7B,kBAA0B,EAC1B,MAAoD,EACpD,eAAuB,SAAS,CAAC,6BAA6B,EAC9D,MAAuB,EACvB,WAAW,GAAG,SAAS,CAAC,yBAAyB,EACjD,QAAkB;QAElB,MAAM,cAAc,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,YAAY,MAAM,CAAC;QAEnE,MAAM,YAAY,GAAG;YACjB,QAAQ;YACR,kBAAkB;YAClB,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;YACzC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC3C,YAAY;YACZ,MAAM;YACN,QAAQ;YACR,WAAW;SACd,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,WAAW,EAAE;YAC5C,aAAa,EAAE,cAAc,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3H,GAAG,YAAY;SAClB,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,MAAM,CAAU,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QACrG,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,kBAAkB,CACzB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,QAAQ,EAC1B,iBAAiB,CAAC,kBAAkB,EACpC,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AA5FG;IADC,SAAS,EAAE;4DAGX;AAUD;IADC,SAAS,EAAE;kDAGX;AAgFL,aAAa,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,CAAC","sourcesContent":["import { Camera } from \"../Cameras/camera\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport type { Nullable } from \"../types\";\r\n\r\nimport type { AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport type { ThinTonemapPostProcessOptions, TonemappingOperator } from \"./thinTonemapPostProcess\";\r\nimport { ThinTonemapPostProcess } from \"./thinTonemapPostProcess\";\r\nimport type { Scene } from \"../scene\";\r\n\r\nexport type ToneMapPostProcessOptions = ThinTonemapPostProcessOptions & PostProcessOptions;\r\n\r\n/**\r\n * Defines a post process to apply tone mapping\r\n */\r\nexport class TonemapPostProcess extends PostProcess {\r\n /**\r\n * Defines the required exposure adjustment\r\n */\r\n @serialize()\r\n public get exposureAdjustment() {\r\n return this._effectWrapper.exposureAdjustment;\r\n }\r\n\r\n public set exposureAdjustment(value: number) {\r\n this._effectWrapper.exposureAdjustment = value;\r\n }\r\n\r\n /**\r\n * Gets the operator used for tonemapping\r\n */\r\n @serialize()\r\n public get operator() {\r\n return this._effectWrapper.operator;\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"TonemapPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"TonemapPostProcess\";\r\n }\r\n\r\n protected override _effectWrapper: ThinTonemapPostProcess;\r\n\r\n /**\r\n * Creates a new TonemapPostProcess\r\n * @param name defines the name of the postprocess\r\n * @param operator defines the operator to use\r\n * @param exposureAdjustment defines the required exposure adjustment\r\n * @param camera defines the camera to use (can be null)\r\n * @param samplingMode defines the required sampling mode (BABYLON.Texture.BILINEAR_SAMPLINGMODE by default)\r\n * @param engine defines the hosting engine (can be ignore if camera is set)\r\n * @param textureType defines the texture format to use (BABYLON.Engine.TEXTURETYPE_UNSIGNED_BYTE by default)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n operator: TonemappingOperator,\r\n exposureAdjustment: number,\r\n camera: Nullable<Camera> | ToneMapPostProcessOptions,\r\n samplingMode: number = Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n engine?: AbstractEngine,\r\n textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n reusable?: boolean\r\n ) {\r\n const cameraIsCamera = camera === null || camera instanceof Camera;\r\n\r\n const localOptions = {\r\n operator,\r\n exposureAdjustment,\r\n uniforms: ThinTonemapPostProcess.Uniforms,\r\n camera: cameraIsCamera ? camera : undefined,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n textureType,\r\n };\r\n\r\n if (!cameraIsCamera) {\r\n Object.assign(localOptions, camera);\r\n }\r\n\r\n super(name, ThinTonemapPostProcess.FragmentUrl, {\r\n effectWrapper: cameraIsCamera || !camera.effectWrapper ? new ThinTonemapPostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string): Nullable<TonemapPostProcess> {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new TonemapPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.operator,\r\n parsedPostProcess.exposureAdjustment,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TonemapPostProcess\", TonemapPostProcess);\r\n"]}
|
|
@@ -2,17 +2,31 @@
|
|
|
2
2
|
import { ShaderStore } from "../Engines/shaderStore.js";
|
|
3
3
|
const name = "pickingPixelShader";
|
|
4
4
|
const shader = `#if defined(INSTANCES)
|
|
5
|
-
varying
|
|
5
|
+
varying float vMeshID;
|
|
6
6
|
#else
|
|
7
|
-
uniform
|
|
7
|
+
uniform float meshID;
|
|
8
8
|
#endif
|
|
9
|
-
void main(void) {
|
|
9
|
+
void main(void) {float id;
|
|
10
10
|
#if defined(INSTANCES)
|
|
11
|
-
|
|
11
|
+
id=vMeshID;
|
|
12
12
|
#else
|
|
13
|
-
|
|
13
|
+
id=meshID;
|
|
14
14
|
#endif
|
|
15
|
-
|
|
15
|
+
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
16
|
+
int castedId=int(id);vec3 color=vec3(
|
|
17
|
+
float((castedId>>16) & 0xFF),
|
|
18
|
+
float((castedId>>8) & 0xFF),
|
|
19
|
+
float(castedId & 0xFF)
|
|
20
|
+
)/255.0;gl_FragColor=vec4(color,1.0);
|
|
21
|
+
#else
|
|
22
|
+
float castedId=floor(id+0.5);vec3 color=vec3(
|
|
23
|
+
floor(mod(castedId,16777216.0)/65536.0),
|
|
24
|
+
floor(mod(castedId,65536.0)/256.0),
|
|
25
|
+
mod(castedId,256.0)
|
|
26
|
+
)/255.0;gl_FragColor=vec4(color,1.0);
|
|
27
|
+
#endif
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
16
30
|
// Sideeffect
|
|
17
31
|
if (!ShaderStore.ShadersStore[name]) {
|
|
18
32
|
ShaderStore.ShadersStore[name] = shader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picking.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/Shaders/picking.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"picking.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/Shaders/picking.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC5C,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\n\nconst name = \"pickingPixelShader\";\nconst shader = `#if defined(INSTANCES)\nvarying float vMeshID;\n#else\nuniform float meshID;\n#endif\nvoid main(void) {float id;\n#if defined(INSTANCES)\nid=vMeshID;\n#else\nid=meshID;\n#endif\n#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)\nint castedId=int(id);vec3 color=vec3(\nfloat((castedId>>16) & 0xFF),\nfloat((castedId>>8) & 0xFF),\nfloat(castedId & 0xFF)\n)/255.0;gl_FragColor=vec4(color,1.0);\n#else\nfloat castedId=floor(id+0.5);vec3 color=vec3(\nfloor(mod(castedId,16777216.0)/65536.0),\nfloor(mod(castedId,65536.0)/256.0),\nmod(castedId,256.0)\n)/255.0;gl_FragColor=vec4(color,1.0);\n#endif\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\n/** @internal */\nexport const pickingPixelShader = { name, shader };\n"]}
|
|
@@ -13,7 +13,7 @@ import "./ShadersInclude/bakedVertexAnimation.js";
|
|
|
13
13
|
const name = "pickingVertexShader";
|
|
14
14
|
const shader = `attribute vec3 position;
|
|
15
15
|
#if defined(INSTANCES)
|
|
16
|
-
attribute
|
|
16
|
+
attribute float instanceMeshID;
|
|
17
17
|
#endif
|
|
18
18
|
#include<bonesDeclaration>
|
|
19
19
|
#include<bakedVertexAnimationDeclaration>
|
|
@@ -22,7 +22,7 @@ attribute vec4 instanceMeshID;
|
|
|
22
22
|
#include<instancesDeclaration>
|
|
23
23
|
uniform mat4 viewProjection;
|
|
24
24
|
#if defined(INSTANCES)
|
|
25
|
-
varying
|
|
25
|
+
varying float vMeshID;
|
|
26
26
|
#endif
|
|
27
27
|
void main(void) {
|
|
28
28
|
#include<morphTargetsVertexGlobal>
|
|
@@ -34,7 +34,8 @@ vec4 worldPos=finalWorld*vec4(position,1.0);gl_Position=viewProjection*worldPos;
|
|
|
34
34
|
#if defined(INSTANCES)
|
|
35
35
|
vMeshID=instanceMeshID;
|
|
36
36
|
#endif
|
|
37
|
-
}
|
|
37
|
+
}
|
|
38
|
+
`;
|
|
38
39
|
// Sideeffect
|
|
39
40
|
if (!ShaderStore.ShadersStore[name]) {
|
|
40
41
|
ShaderStore.ShadersStore[name] = shader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picking.vertex.js","sourceRoot":"","sources":["../../../../dev/core/src/Shaders/picking.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kDAAkD,CAAC;AAC1D,OAAO,sDAAsD,CAAC;AAC9D,OAAO,gDAAgD,CAAC;AACxD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,2CAA2C,CAAC;AACnD,OAAO,qCAAqC,CAAC;AAC7C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,uCAAuC,CAAC;AAE/C,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"picking.vertex.js","sourceRoot":"","sources":["../../../../dev/core/src/Shaders/picking.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kDAAkD,CAAC;AAC1D,OAAO,sDAAsD,CAAC;AAC9D,OAAO,gDAAgD,CAAC;AACxD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,2CAA2C,CAAC;AACnD,OAAO,qCAAqC,CAAC;AAC7C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,uCAAuC,CAAC;AAE/C,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC5C,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport \"./ShadersInclude/bonesDeclaration\";\nimport \"./ShadersInclude/bakedVertexAnimationDeclaration\";\nimport \"./ShadersInclude/morphTargetsVertexGlobalDeclaration\";\nimport \"./ShadersInclude/morphTargetsVertexDeclaration\";\nimport \"./ShadersInclude/instancesDeclaration\";\nimport \"./ShadersInclude/morphTargetsVertexGlobal\";\nimport \"./ShadersInclude/morphTargetsVertex\";\nimport \"./ShadersInclude/instancesVertex\";\nimport \"./ShadersInclude/bonesVertex\";\nimport \"./ShadersInclude/bakedVertexAnimation\";\n\nconst name = \"pickingVertexShader\";\nconst shader = `attribute vec3 position;\n#if defined(INSTANCES)\nattribute float instanceMeshID;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<morphTargetsVertexGlobalDeclaration>\n#include<morphTargetsVertexDeclaration>[0..maxSimultaneousMorphTargets]\n#include<instancesDeclaration>\nuniform mat4 viewProjection;\n#if defined(INSTANCES)\nvarying float vMeshID;\n#endif\nvoid main(void) {\n#include<morphTargetsVertexGlobal>\n#include<morphTargetsVertex>[0..maxSimultaneousMorphTargets]\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(position,1.0);gl_Position=viewProjection*worldPos;\n#if defined(INSTANCES)\nvMeshID=instanceMeshID;\n#endif\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\n/** @internal */\nexport const pickingVertexShader = { name, shader };\n"]}
|
|
@@ -2,18 +2,23 @@
|
|
|
2
2
|
import { ShaderStore } from "../Engines/shaderStore.js";
|
|
3
3
|
const name = "pickingPixelShader";
|
|
4
4
|
const shader = `#if defined(INSTANCES)
|
|
5
|
-
varying vMeshID:
|
|
5
|
+
varying vMeshID: f32;
|
|
6
6
|
#else
|
|
7
|
-
uniform meshID:
|
|
7
|
+
uniform meshID: f32;
|
|
8
8
|
#endif
|
|
9
9
|
@fragment
|
|
10
|
-
fn main(input: FragmentInputs)->FragmentOutputs {
|
|
10
|
+
fn main(input: FragmentInputs)->FragmentOutputs {var id: i32;
|
|
11
11
|
#if defined(INSTANCES)
|
|
12
|
-
|
|
12
|
+
id=i32(input.vMeshID);
|
|
13
13
|
#else
|
|
14
|
-
|
|
14
|
+
id=i32(uniforms.meshID);
|
|
15
15
|
#endif
|
|
16
|
-
|
|
16
|
+
var color=vec3f(
|
|
17
|
+
f32((id>>16) & 0xFF),
|
|
18
|
+
f32((id>>8) & 0xFF),
|
|
19
|
+
f32(id & 0xFF),
|
|
20
|
+
)/255.0;fragmentOutputs.color=vec4f(color,1.0);}
|
|
21
|
+
`;
|
|
17
22
|
// Sideeffect
|
|
18
23
|
if (!ShaderStore.ShadersStoreWGSL[name]) {
|
|
19
24
|
ShaderStore.ShadersStoreWGSL[name] = shader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picking.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/picking.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"picking.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/picking.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;CAiBd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\n\nconst name = \"pickingPixelShader\";\nconst shader = `#if defined(INSTANCES)\nvarying vMeshID: f32;\n#else\nuniform meshID: f32;\n#endif\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var id: i32;\n#if defined(INSTANCES)\nid=i32(input.vMeshID);\n#else\nid=i32(uniforms.meshID);\n#endif\nvar color=vec3f(\nf32((id>>16) & 0xFF),\nf32((id>>8) & 0xFF),\nf32(id & 0xFF),\n)/255.0;fragmentOutputs.color=vec4f(color,1.0);}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\n/** @internal */\nexport const pickingPixelShaderWGSL = { name, shader };\n"]}
|
|
@@ -13,7 +13,7 @@ import "./ShadersInclude/bakedVertexAnimation.js";
|
|
|
13
13
|
const name = "pickingVertexShader";
|
|
14
14
|
const shader = `attribute position: vec3f;
|
|
15
15
|
#if defined(INSTANCES)
|
|
16
|
-
attribute instanceMeshID:
|
|
16
|
+
attribute instanceMeshID: f32;
|
|
17
17
|
#endif
|
|
18
18
|
#include<bonesDeclaration>
|
|
19
19
|
#include<bakedVertexAnimationDeclaration>
|
|
@@ -22,7 +22,7 @@ attribute instanceMeshID: vec4f;
|
|
|
22
22
|
#include<instancesDeclaration>
|
|
23
23
|
uniform viewProjection: mat4x4f;
|
|
24
24
|
#if defined(INSTANCES)
|
|
25
|
-
varying vMeshID:
|
|
25
|
+
varying vMeshID: f32;
|
|
26
26
|
#endif
|
|
27
27
|
@vertex
|
|
28
28
|
fn main(input : VertexInputs)->FragmentInputs {
|
|
@@ -35,7 +35,8 @@ var worldPos: vec4f=finalWorld*vec4f(input.position,1.0);vertexOutputs.position=
|
|
|
35
35
|
#if defined(INSTANCES)
|
|
36
36
|
vertexOutputs.vMeshID=input.instanceMeshID;
|
|
37
37
|
#endif
|
|
38
|
-
}
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
39
40
|
// Sideeffect
|
|
40
41
|
if (!ShaderStore.ShadersStoreWGSL[name]) {
|
|
41
42
|
ShaderStore.ShadersStoreWGSL[name] = shader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picking.vertex.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/picking.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kDAAkD,CAAC;AAC1D,OAAO,sDAAsD,CAAC;AAC9D,OAAO,gDAAgD,CAAC;AACxD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,2CAA2C,CAAC;AACnD,OAAO,qCAAqC,CAAC;AAC7C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,uCAAuC,CAAC;AAE/C,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"picking.vertex.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/picking.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kDAAkD,CAAC;AAC1D,OAAO,sDAAsD,CAAC;AAC9D,OAAO,gDAAgD,CAAC;AACxD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,2CAA2C,CAAC;AACnD,OAAO,qCAAqC,CAAC;AAC7C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,uCAAuC,CAAC;AAE/C,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport \"./ShadersInclude/bonesDeclaration\";\nimport \"./ShadersInclude/bakedVertexAnimationDeclaration\";\nimport \"./ShadersInclude/morphTargetsVertexGlobalDeclaration\";\nimport \"./ShadersInclude/morphTargetsVertexDeclaration\";\nimport \"./ShadersInclude/instancesDeclaration\";\nimport \"./ShadersInclude/morphTargetsVertexGlobal\";\nimport \"./ShadersInclude/morphTargetsVertex\";\nimport \"./ShadersInclude/instancesVertex\";\nimport \"./ShadersInclude/bonesVertex\";\nimport \"./ShadersInclude/bakedVertexAnimation\";\n\nconst name = \"pickingVertexShader\";\nconst shader = `attribute position: vec3f;\n#if defined(INSTANCES)\nattribute instanceMeshID: f32;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<morphTargetsVertexGlobalDeclaration>\n#include<morphTargetsVertexDeclaration>[0..maxSimultaneousMorphTargets]\n#include<instancesDeclaration>\nuniform viewProjection: mat4x4f;\n#if defined(INSTANCES)\nvarying vMeshID: f32;\n#endif\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#include<morphTargetsVertexGlobal>\n#include<morphTargetsVertex>[0..maxSimultaneousMorphTargets]\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvar worldPos: vec4f=finalWorld*vec4f(input.position,1.0);vertexOutputs.position=uniforms.viewProjection*worldPos;\n#if defined(INSTANCES)\nvertexOutputs.vMeshID=input.instanceMeshID;\n#endif\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\n/** @internal */\nexport const pickingVertexShaderWGSL = { name, shader };\n"]}
|