This commit is contained in:
Akko
2025-08-04 18:57:35 +02:00
parent 8cf6e78a79
commit 9495868c2e
5030 changed files with 518594 additions and 17609 deletions

View File

@@ -0,0 +1,2 @@
import type { UboElement, UNIFORM_TYPES_SINGLE, UniformsSyncCallback } from '../types';
export declare function createUboSyncFunction(uboElements: UboElement[], parserCode: 'uboWgsl' | 'uboStd40', arrayGenerationFunction: (uboElement: UboElement, offsetToAdd: number) => string, singleSettersMap: Record<UNIFORM_TYPES_SINGLE, string>): UniformsSyncCallback;

View File

@@ -0,0 +1,63 @@
'use strict';
var uniformParsers = require('./uniformParsers.js');
"use strict";
function createUboSyncFunction(uboElements, parserCode, arrayGenerationFunction, singleSettersMap) {
const funcFragments = [`
var v = null;
var v2 = null;
var t = 0;
var index = 0;
var name = null;
var arrayOffset = null;
`];
let prev = 0;
for (let i = 0; i < uboElements.length; i++) {
const uboElement = uboElements[i];
const name = uboElement.data.name;
let parsed = false;
let offset = 0;
for (let j = 0; j < uniformParsers.uniformParsers.length; j++) {
const uniformParser = uniformParsers.uniformParsers[j];
if (uniformParser.test(uboElement.data)) {
offset = uboElement.offset / 4;
funcFragments.push(
`name = "${name}";`,
`offset += ${offset - prev};`,
uniformParsers.uniformParsers[j][parserCode] || uniformParsers.uniformParsers[j].ubo
);
parsed = true;
break;
}
}
if (!parsed) {
if (uboElement.data.size > 1) {
offset = uboElement.offset / 4;
funcFragments.push(arrayGenerationFunction(uboElement, offset - prev));
} else {
const template = singleSettersMap[uboElement.data.type];
offset = uboElement.offset / 4;
funcFragments.push(
/* wgsl */
`
v = uv.${name};
offset += ${offset - prev};
${template};
`
);
}
}
prev = offset;
}
const fragmentSrc = funcFragments.join("\n");
return new Function(
"uv",
"data",
"offset",
fragmentSrc
);
}
exports.createUboSyncFunction = createUboSyncFunction;
//# sourceMappingURL=createUboSyncFunction.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"createUboSyncFunction.js","sources":["../../../../../../src/rendering/renderers/shared/shader/utils/createUboSyncFunction.ts"],"sourcesContent":["/* eslint-disable quote-props */\nimport { uniformParsers } from './uniformParsers';\n\nimport type { UboElement, UNIFORM_TYPES_SINGLE, UniformsSyncCallback } from '../types';\n\nexport function createUboSyncFunction(\n uboElements: UboElement[],\n parserCode: 'uboWgsl' | 'uboStd40',\n arrayGenerationFunction: (uboElement: UboElement, offsetToAdd: number) => string,\n singleSettersMap: Record<UNIFORM_TYPES_SINGLE, string>,\n): UniformsSyncCallback\n{\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var t = 0;\n var index = 0;\n var name = null;\n var arrayOffset = null;\n `];\n\n let prev = 0;\n\n for (let i = 0; i < uboElements.length; i++)\n {\n const uboElement = uboElements[i];\n\n const name = uboElement.data.name;\n\n let parsed = false;\n let offset = 0;\n\n for (let j = 0; j < uniformParsers.length; j++)\n {\n const uniformParser = uniformParsers[j];\n\n if (uniformParser.test(uboElement.data))\n {\n offset = uboElement.offset / 4;\n\n funcFragments.push(\n `name = \"${name}\";`,\n `offset += ${offset - prev};`,\n uniformParsers[j][parserCode] || uniformParsers[j].ubo);\n parsed = true;\n\n break;\n }\n }\n\n if (!parsed)\n {\n if (uboElement.data.size > 1)\n {\n offset = uboElement.offset / 4;\n\n funcFragments.push(arrayGenerationFunction(uboElement, offset - prev));\n }\n else\n {\n const template = singleSettersMap[uboElement.data.type as UNIFORM_TYPES_SINGLE];\n\n offset = uboElement.offset / 4;\n\n funcFragments.push(/* wgsl */`\n v = uv.${name};\n offset += ${offset - prev};\n ${template};\n `);\n }\n }\n\n prev = offset;\n }\n\n const fragmentSrc = funcFragments.join('\\n');\n\n // eslint-disable-next-line no-new-func\n return new Function(\n 'uv',\n 'data',\n 'offset',\n fragmentSrc,\n ) as UniformsSyncCallback;\n}\n"],"names":["uniformParsers"],"mappings":";;;;;AAKO,SAAS,qBACZ,CAAA,WAAA,EACA,UACA,EAAA,uBAAA,EACA,gBAEJ,EAAA;AACI,EAAA,MAAM,gBAAgB,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOtB,CAAA,CAAA,CAAA;AAED,EAAA,IAAI,IAAO,GAAA,CAAA,CAAA;AAEX,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,WAAA,CAAY,QAAQ,CACxC,EAAA,EAAA;AACI,IAAM,MAAA,UAAA,GAAa,YAAY,CAAC,CAAA,CAAA;AAEhC,IAAM,MAAA,IAAA,GAAO,WAAW,IAAK,CAAA,IAAA,CAAA;AAE7B,IAAA,IAAI,MAAS,GAAA,KAAA,CAAA;AACb,IAAA,IAAI,MAAS,GAAA,CAAA,CAAA;AAEb,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAAA,6BAAA,CAAe,QAAQ,CAC3C,EAAA,EAAA;AACI,MAAM,MAAA,aAAA,GAAgBA,8BAAe,CAAC,CAAA,CAAA;AAEtC,MAAA,IAAI,aAAc,CAAA,IAAA,CAAK,UAAW,CAAA,IAAI,CACtC,EAAA;AACI,QAAA,MAAA,GAAS,WAAW,MAAS,GAAA,CAAA,CAAA;AAE7B,QAAc,aAAA,CAAA,IAAA;AAAA,UACV,WAAW,IAAI,CAAA,EAAA,CAAA;AAAA,UACf,CAAA,UAAA,EAAa,SAAS,IAAI,CAAA,CAAA,CAAA;AAAA,UAC1BA,8BAAe,CAAC,CAAA,CAAE,UAAU,CAAK,IAAAA,6BAAA,CAAe,CAAC,CAAE,CAAA,GAAA;AAAA,SAAG,CAAA;AAC1D,QAAS,MAAA,GAAA,IAAA,CAAA;AAET,QAAA,MAAA;AAAA,OACJ;AAAA,KACJ;AAEA,IAAA,IAAI,CAAC,MACL,EAAA;AACI,MAAI,IAAA,UAAA,CAAW,IAAK,CAAA,IAAA,GAAO,CAC3B,EAAA;AACI,QAAA,MAAA,GAAS,WAAW,MAAS,GAAA,CAAA,CAAA;AAE7B,QAAA,aAAA,CAAc,IAAK,CAAA,uBAAA,CAAwB,UAAY,EAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AAAA,OAGzE,MAAA;AACI,QAAA,MAAM,QAAW,GAAA,gBAAA,CAAiB,UAAW,CAAA,IAAA,CAAK,IAA4B,CAAA,CAAA;AAE9E,QAAA,MAAA,GAAS,WAAW,MAAS,GAAA,CAAA,CAAA;AAE7B,QAAc,aAAA,CAAA,IAAA;AAAA;AAAA,UAAe,CAAA;AAAA,2BAAA,EAChB,IAAI,CAAA;AAAA,8BAAA,EACD,SAAS,IAAI,CAAA;AAAA,oBAAA,EACvB,QAAQ,CAAA;AAAA,gBAAA,CAAA;AAAA,SACb,CAAA;AAAA,OACL;AAAA,KACJ;AAEA,IAAO,IAAA,GAAA,MAAA,CAAA;AAAA,GACX;AAEA,EAAM,MAAA,WAAA,GAAc,aAAc,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAG3C,EAAA,OAAO,IAAI,QAAA;AAAA,IACP,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,GACJ,CAAA;AACJ;;;;"}

View File

@@ -0,0 +1,61 @@
import { uniformParsers } from './uniformParsers.mjs';
"use strict";
function createUboSyncFunction(uboElements, parserCode, arrayGenerationFunction, singleSettersMap) {
const funcFragments = [`
var v = null;
var v2 = null;
var t = 0;
var index = 0;
var name = null;
var arrayOffset = null;
`];
let prev = 0;
for (let i = 0; i < uboElements.length; i++) {
const uboElement = uboElements[i];
const name = uboElement.data.name;
let parsed = false;
let offset = 0;
for (let j = 0; j < uniformParsers.length; j++) {
const uniformParser = uniformParsers[j];
if (uniformParser.test(uboElement.data)) {
offset = uboElement.offset / 4;
funcFragments.push(
`name = "${name}";`,
`offset += ${offset - prev};`,
uniformParsers[j][parserCode] || uniformParsers[j].ubo
);
parsed = true;
break;
}
}
if (!parsed) {
if (uboElement.data.size > 1) {
offset = uboElement.offset / 4;
funcFragments.push(arrayGenerationFunction(uboElement, offset - prev));
} else {
const template = singleSettersMap[uboElement.data.type];
offset = uboElement.offset / 4;
funcFragments.push(
/* wgsl */
`
v = uv.${name};
offset += ${offset - prev};
${template};
`
);
}
}
prev = offset;
}
const fragmentSrc = funcFragments.join("\n");
return new Function(
"uv",
"data",
"offset",
fragmentSrc
);
}
export { createUboSyncFunction };
//# sourceMappingURL=createUboSyncFunction.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"createUboSyncFunction.mjs","sources":["../../../../../../src/rendering/renderers/shared/shader/utils/createUboSyncFunction.ts"],"sourcesContent":["/* eslint-disable quote-props */\nimport { uniformParsers } from './uniformParsers';\n\nimport type { UboElement, UNIFORM_TYPES_SINGLE, UniformsSyncCallback } from '../types';\n\nexport function createUboSyncFunction(\n uboElements: UboElement[],\n parserCode: 'uboWgsl' | 'uboStd40',\n arrayGenerationFunction: (uboElement: UboElement, offsetToAdd: number) => string,\n singleSettersMap: Record<UNIFORM_TYPES_SINGLE, string>,\n): UniformsSyncCallback\n{\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var t = 0;\n var index = 0;\n var name = null;\n var arrayOffset = null;\n `];\n\n let prev = 0;\n\n for (let i = 0; i < uboElements.length; i++)\n {\n const uboElement = uboElements[i];\n\n const name = uboElement.data.name;\n\n let parsed = false;\n let offset = 0;\n\n for (let j = 0; j < uniformParsers.length; j++)\n {\n const uniformParser = uniformParsers[j];\n\n if (uniformParser.test(uboElement.data))\n {\n offset = uboElement.offset / 4;\n\n funcFragments.push(\n `name = \"${name}\";`,\n `offset += ${offset - prev};`,\n uniformParsers[j][parserCode] || uniformParsers[j].ubo);\n parsed = true;\n\n break;\n }\n }\n\n if (!parsed)\n {\n if (uboElement.data.size > 1)\n {\n offset = uboElement.offset / 4;\n\n funcFragments.push(arrayGenerationFunction(uboElement, offset - prev));\n }\n else\n {\n const template = singleSettersMap[uboElement.data.type as UNIFORM_TYPES_SINGLE];\n\n offset = uboElement.offset / 4;\n\n funcFragments.push(/* wgsl */`\n v = uv.${name};\n offset += ${offset - prev};\n ${template};\n `);\n }\n }\n\n prev = offset;\n }\n\n const fragmentSrc = funcFragments.join('\\n');\n\n // eslint-disable-next-line no-new-func\n return new Function(\n 'uv',\n 'data',\n 'offset',\n fragmentSrc,\n ) as UniformsSyncCallback;\n}\n"],"names":[],"mappings":";;;AAKO,SAAS,qBACZ,CAAA,WAAA,EACA,UACA,EAAA,uBAAA,EACA,gBAEJ,EAAA;AACI,EAAA,MAAM,gBAAgB,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOtB,CAAA,CAAA,CAAA;AAED,EAAA,IAAI,IAAO,GAAA,CAAA,CAAA;AAEX,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,WAAA,CAAY,QAAQ,CACxC,EAAA,EAAA;AACI,IAAM,MAAA,UAAA,GAAa,YAAY,CAAC,CAAA,CAAA;AAEhC,IAAM,MAAA,IAAA,GAAO,WAAW,IAAK,CAAA,IAAA,CAAA;AAE7B,IAAA,IAAI,MAAS,GAAA,KAAA,CAAA;AACb,IAAA,IAAI,MAAS,GAAA,CAAA,CAAA;AAEb,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,cAAA,CAAe,QAAQ,CAC3C,EAAA,EAAA;AACI,MAAM,MAAA,aAAA,GAAgB,eAAe,CAAC,CAAA,CAAA;AAEtC,MAAA,IAAI,aAAc,CAAA,IAAA,CAAK,UAAW,CAAA,IAAI,CACtC,EAAA;AACI,QAAA,MAAA,GAAS,WAAW,MAAS,GAAA,CAAA,CAAA;AAE7B,QAAc,aAAA,CAAA,IAAA;AAAA,UACV,WAAW,IAAI,CAAA,EAAA,CAAA;AAAA,UACf,CAAA,UAAA,EAAa,SAAS,IAAI,CAAA,CAAA,CAAA;AAAA,UAC1B,eAAe,CAAC,CAAA,CAAE,UAAU,CAAK,IAAA,cAAA,CAAe,CAAC,CAAE,CAAA,GAAA;AAAA,SAAG,CAAA;AAC1D,QAAS,MAAA,GAAA,IAAA,CAAA;AAET,QAAA,MAAA;AAAA,OACJ;AAAA,KACJ;AAEA,IAAA,IAAI,CAAC,MACL,EAAA;AACI,MAAI,IAAA,UAAA,CAAW,IAAK,CAAA,IAAA,GAAO,CAC3B,EAAA;AACI,QAAA,MAAA,GAAS,WAAW,MAAS,GAAA,CAAA,CAAA;AAE7B,QAAA,aAAA,CAAc,IAAK,CAAA,uBAAA,CAAwB,UAAY,EAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AAAA,OAGzE,MAAA;AACI,QAAA,MAAM,QAAW,GAAA,gBAAA,CAAiB,UAAW,CAAA,IAAA,CAAK,IAA4B,CAAA,CAAA;AAE9E,QAAA,MAAA,GAAS,WAAW,MAAS,GAAA,CAAA,CAAA;AAE7B,QAAc,aAAA,CAAA,IAAA;AAAA;AAAA,UAAe,CAAA;AAAA,2BAAA,EAChB,IAAI,CAAA;AAAA,8BAAA,EACD,SAAS,IAAI,CAAA;AAAA,oBAAA,EACvB,QAAQ,CAAA;AAAA,gBAAA,CAAA;AAAA,SACb,CAAA;AAAA,OACL;AAAA,KACJ;AAEA,IAAO,IAAA,GAAA,MAAA,CAAA;AAAA,GACX;AAEA,EAAM,MAAA,WAAA,GAAc,aAAc,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAG3C,EAAA,OAAO,IAAI,QAAA;AAAA,IACP,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,GACJ,CAAA;AACJ;;;;"}

View File

@@ -0,0 +1,7 @@
/**
* @method defaultValue
* @param {string} type - Type of value
* @param {number} size
* @private
*/
export declare function getDefaultUniformValue(type: string, size: number): number | Float32Array | Int32Array | Uint32Array | boolean | boolean[];

View File

@@ -0,0 +1,57 @@
'use strict';
"use strict";
function getDefaultUniformValue(type, size) {
switch (type) {
case "f32":
return 0;
case "vec2<f32>":
return new Float32Array(2 * size);
case "vec3<f32>":
return new Float32Array(3 * size);
case "vec4<f32>":
return new Float32Array(4 * size);
case "mat2x2<f32>":
return new Float32Array([
1,
0,
0,
1
]);
case "mat3x3<f32>":
return new Float32Array([
1,
0,
0,
0,
1,
0,
0,
0,
1
]);
case "mat4x4<f32>":
return new Float32Array([
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
]);
}
return null;
}
exports.getDefaultUniformValue = getDefaultUniformValue;
//# sourceMappingURL=getDefaultUniformValue.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"getDefaultUniformValue.js","sources":["../../../../../../src/rendering/renderers/shared/shader/utils/getDefaultUniformValue.ts"],"sourcesContent":["/**\n * @method defaultValue\n * @param {string} type - Type of value\n * @param {number} size\n * @private\n */\nexport function getDefaultUniformValue(\n type: string,\n size: number\n): number | Float32Array | Int32Array | Uint32Array | boolean | boolean[]\n{\n switch (type)\n {\n case 'f32':\n return 0;\n\n case 'vec2<f32>':\n return new Float32Array(2 * size);\n\n case 'vec3<f32>':\n return new Float32Array(3 * size);\n\n case 'vec4<f32>':\n return new Float32Array(4 * size);\n case 'mat2x2<f32>':\n return new Float32Array([1, 0,\n 0, 1]);\n\n case 'mat3x3<f32>':\n return new Float32Array([1, 0, 0,\n 0, 1, 0,\n 0, 0, 1]);\n\n case 'mat4x4<f32>':\n return new Float32Array([1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1]);\n }\n\n return null;\n}\n"],"names":[],"mappings":";;;AAMgB,SAAA,sBAAA,CACZ,MACA,IAEJ,EAAA;AACI,EAAA,QAAQ,IACR;AAAA,IACI,KAAK,KAAA;AACD,MAAO,OAAA,CAAA,CAAA;AAAA,IAEX,KAAK,WAAA;AACD,MAAO,OAAA,IAAI,YAAa,CAAA,CAAA,GAAI,IAAI,CAAA,CAAA;AAAA,IAEpC,KAAK,WAAA;AACD,MAAO,OAAA,IAAI,YAAa,CAAA,CAAA,GAAI,IAAI,CAAA,CAAA;AAAA,IAEpC,KAAK,WAAA;AACD,MAAO,OAAA,IAAI,YAAa,CAAA,CAAA,GAAI,IAAI,CAAA,CAAA;AAAA,IACpC,KAAK,aAAA;AACD,MAAA,OAAO,IAAI,YAAa,CAAA;AAAA,QAAC,CAAA;AAAA,QAAG,CAAA;AAAA,QACxB,CAAA;AAAA,QAAG,CAAA;AAAA,OAAE,CAAA,CAAA;AAAA,IAEb,KAAK,aAAA;AACD,MAAA,OAAO,IAAI,YAAa,CAAA;AAAA,QAAC,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAC3B,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QACN,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,OAAE,CAAA,CAAA;AAAA,IAEhB,KAAK,aAAA;AACD,MAAA,OAAO,IAAI,YAAa,CAAA;AAAA,QAAC,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAC9B,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QACT,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QACT,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,OAAE,CAAA,CAAA;AAAA,GACvB;AAEA,EAAO,OAAA,IAAA,CAAA;AACX;;;;"}

View File

@@ -0,0 +1,55 @@
"use strict";
function getDefaultUniformValue(type, size) {
switch (type) {
case "f32":
return 0;
case "vec2<f32>":
return new Float32Array(2 * size);
case "vec3<f32>":
return new Float32Array(3 * size);
case "vec4<f32>":
return new Float32Array(4 * size);
case "mat2x2<f32>":
return new Float32Array([
1,
0,
0,
1
]);
case "mat3x3<f32>":
return new Float32Array([
1,
0,
0,
0,
1,
0,
0,
0,
1
]);
case "mat4x4<f32>":
return new Float32Array([
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
]);
}
return null;
}
export { getDefaultUniformValue };
//# sourceMappingURL=getDefaultUniformValue.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"getDefaultUniformValue.mjs","sources":["../../../../../../src/rendering/renderers/shared/shader/utils/getDefaultUniformValue.ts"],"sourcesContent":["/**\n * @method defaultValue\n * @param {string} type - Type of value\n * @param {number} size\n * @private\n */\nexport function getDefaultUniformValue(\n type: string,\n size: number\n): number | Float32Array | Int32Array | Uint32Array | boolean | boolean[]\n{\n switch (type)\n {\n case 'f32':\n return 0;\n\n case 'vec2<f32>':\n return new Float32Array(2 * size);\n\n case 'vec3<f32>':\n return new Float32Array(3 * size);\n\n case 'vec4<f32>':\n return new Float32Array(4 * size);\n case 'mat2x2<f32>':\n return new Float32Array([1, 0,\n 0, 1]);\n\n case 'mat3x3<f32>':\n return new Float32Array([1, 0, 0,\n 0, 1, 0,\n 0, 0, 1]);\n\n case 'mat4x4<f32>':\n return new Float32Array([1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1]);\n }\n\n return null;\n}\n"],"names":[],"mappings":";AAMgB,SAAA,sBAAA,CACZ,MACA,IAEJ,EAAA;AACI,EAAA,QAAQ,IACR;AAAA,IACI,KAAK,KAAA;AACD,MAAO,OAAA,CAAA,CAAA;AAAA,IAEX,KAAK,WAAA;AACD,MAAO,OAAA,IAAI,YAAa,CAAA,CAAA,GAAI,IAAI,CAAA,CAAA;AAAA,IAEpC,KAAK,WAAA;AACD,MAAO,OAAA,IAAI,YAAa,CAAA,CAAA,GAAI,IAAI,CAAA,CAAA;AAAA,IAEpC,KAAK,WAAA;AACD,MAAO,OAAA,IAAI,YAAa,CAAA,CAAA,GAAI,IAAI,CAAA,CAAA;AAAA,IACpC,KAAK,aAAA;AACD,MAAA,OAAO,IAAI,YAAa,CAAA;AAAA,QAAC,CAAA;AAAA,QAAG,CAAA;AAAA,QACxB,CAAA;AAAA,QAAG,CAAA;AAAA,OAAE,CAAA,CAAA;AAAA,IAEb,KAAK,aAAA;AACD,MAAA,OAAO,IAAI,YAAa,CAAA;AAAA,QAAC,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAC3B,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QACN,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,OAAE,CAAA,CAAA;AAAA,IAEhB,KAAK,aAAA;AACD,MAAA,OAAO,IAAI,YAAa,CAAA;AAAA,QAAC,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAC9B,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QACT,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QACT,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,OAAE,CAAA,CAAA;AAAA,GACvB;AAEA,EAAO,OAAA,IAAA,CAAA;AACX;;;;"}

View File

@@ -0,0 +1,3 @@
import type { UNIFORM_TYPES_SINGLE } from '../types';
export declare const uboSyncFunctionsSTD40: Record<UNIFORM_TYPES_SINGLE, string>;
export declare const uboSyncFunctionsWGSL: Record<UNIFORM_TYPES_SINGLE, string>;

View File

@@ -0,0 +1,67 @@
'use strict';
"use strict";
function loopMatrix(col, row) {
const total = col * row;
return `
for (let i = 0; i < ${total}; i++) {
data[offset + (((i / ${col})|0) * 4) + (i % ${col})] = v[i];
}
`;
}
const uboSyncFunctionsSTD40 = {
f32: `
data[offset] = v;`,
i32: `
data[offset] = v;`,
"vec2<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];`,
"vec3<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];`,
"vec4<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 3] = v[3];`,
"mat2x2<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 4] = v[2];
data[offset + 5] = v[3];`,
"mat3x3<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 4] = v[3];
data[offset + 5] = v[4];
data[offset + 6] = v[5];
data[offset + 8] = v[6];
data[offset + 9] = v[7];
data[offset + 10] = v[8];`,
"mat4x4<f32>": `
for (let i = 0; i < 16; i++) {
data[offset + i] = v[i];
}`,
"mat3x2<f32>": loopMatrix(3, 2),
"mat4x2<f32>": loopMatrix(4, 2),
"mat2x3<f32>": loopMatrix(2, 3),
"mat4x3<f32>": loopMatrix(4, 3),
"mat2x4<f32>": loopMatrix(2, 4),
"mat3x4<f32>": loopMatrix(3, 4)
};
const uboSyncFunctionsWGSL = {
...uboSyncFunctionsSTD40,
"mat2x2<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 3] = v[3];
`
};
exports.uboSyncFunctionsSTD40 = uboSyncFunctionsSTD40;
exports.uboSyncFunctionsWGSL = uboSyncFunctionsWGSL;
//# sourceMappingURL=uboSyncFunctions.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"uboSyncFunctions.js","sources":["../../../../../../src/rendering/renderers/shared/shader/utils/uboSyncFunctions.ts"],"sourcesContent":["import type { UNIFORM_TYPES_SINGLE } from '../types';\n\nfunction loopMatrix(col: number, row: number)\n{\n const total = col * row;\n\n return `\n for (let i = 0; i < ${total}; i++) {\n data[offset + (((i / ${col})|0) * 4) + (i % ${col})] = v[i];\n }\n `;\n}\n\nexport const uboSyncFunctionsSTD40: Record<UNIFORM_TYPES_SINGLE, string> = {\n f32: `\n data[offset] = v;`,\n i32: `\n data[offset] = v;`,\n 'vec2<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];`,\n 'vec3<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];`,\n 'vec4<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];`,\n 'mat2x2<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 4] = v[2];\n data[offset + 5] = v[3];`,\n 'mat3x3<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];`,\n 'mat4x4<f32>': `\n for (let i = 0; i < 16; i++) {\n data[offset + i] = v[i];\n }`,\n 'mat3x2<f32>': loopMatrix(3, 2),\n 'mat4x2<f32>': loopMatrix(4, 2),\n 'mat2x3<f32>': loopMatrix(2, 3),\n 'mat4x3<f32>': loopMatrix(4, 3),\n 'mat2x4<f32>': loopMatrix(2, 4),\n 'mat3x4<f32>': loopMatrix(3, 4),\n};\n\nexport const uboSyncFunctionsWGSL: Record<UNIFORM_TYPES_SINGLE, string> = {\n ...uboSyncFunctionsSTD40,\n 'mat2x2<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n `,\n};\n"],"names":[],"mappings":";;;AAEA,SAAS,UAAA,CAAW,KAAa,GACjC,EAAA;AACI,EAAA,MAAM,QAAQ,GAAM,GAAA,GAAA,CAAA;AAEpB,EAAO,OAAA,CAAA;AAAA,4BAAA,EACmB,KAAK,CAAA;AAAA,iCACA,EAAA,GAAG,oBAAoB,GAAG,CAAA;AAAA;AAAA,IAAA,CAAA,CAAA;AAG7D,CAAA;AAEO,MAAM,qBAA8D,GAAA;AAAA,EACvE,GAAK,EAAA,CAAA;AAAA,yBAAA,CAAA;AAAA,EAEL,GAAK,EAAA,CAAA;AAAA,yBAAA,CAAA;AAAA,EAEL,WAAa,EAAA,CAAA;AAAA;AAAA,gCAAA,CAAA;AAAA,EAGb,WAAa,EAAA,CAAA;AAAA;AAAA;AAAA,gCAAA,CAAA;AAAA,EAIb,WAAa,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,gCAAA,CAAA;AAAA,EAKb,aAAe,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,gCAAA,CAAA;AAAA,EAKf,aAAe,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAAA,CAAA;AAAA,EAUf,aAAe,EAAA,CAAA;AAAA;AAAA;AAAA,SAAA,CAAA;AAAA,EAIf,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAClC,EAAA;AAEO,MAAM,oBAA6D,GAAA;AAAA,EACtE,GAAG,qBAAA;AAAA,EACH,aAAe,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAMnB;;;;;"}

View File

@@ -0,0 +1,64 @@
"use strict";
function loopMatrix(col, row) {
const total = col * row;
return `
for (let i = 0; i < ${total}; i++) {
data[offset + (((i / ${col})|0) * 4) + (i % ${col})] = v[i];
}
`;
}
const uboSyncFunctionsSTD40 = {
f32: `
data[offset] = v;`,
i32: `
data[offset] = v;`,
"vec2<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];`,
"vec3<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];`,
"vec4<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 3] = v[3];`,
"mat2x2<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 4] = v[2];
data[offset + 5] = v[3];`,
"mat3x3<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 4] = v[3];
data[offset + 5] = v[4];
data[offset + 6] = v[5];
data[offset + 8] = v[6];
data[offset + 9] = v[7];
data[offset + 10] = v[8];`,
"mat4x4<f32>": `
for (let i = 0; i < 16; i++) {
data[offset + i] = v[i];
}`,
"mat3x2<f32>": loopMatrix(3, 2),
"mat4x2<f32>": loopMatrix(4, 2),
"mat2x3<f32>": loopMatrix(2, 3),
"mat4x3<f32>": loopMatrix(4, 3),
"mat2x4<f32>": loopMatrix(2, 4),
"mat3x4<f32>": loopMatrix(3, 4)
};
const uboSyncFunctionsWGSL = {
...uboSyncFunctionsSTD40,
"mat2x2<f32>": `
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 3] = v[3];
`
};
export { uboSyncFunctionsSTD40, uboSyncFunctionsWGSL };
//# sourceMappingURL=uboSyncFunctions.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"uboSyncFunctions.mjs","sources":["../../../../../../src/rendering/renderers/shared/shader/utils/uboSyncFunctions.ts"],"sourcesContent":["import type { UNIFORM_TYPES_SINGLE } from '../types';\n\nfunction loopMatrix(col: number, row: number)\n{\n const total = col * row;\n\n return `\n for (let i = 0; i < ${total}; i++) {\n data[offset + (((i / ${col})|0) * 4) + (i % ${col})] = v[i];\n }\n `;\n}\n\nexport const uboSyncFunctionsSTD40: Record<UNIFORM_TYPES_SINGLE, string> = {\n f32: `\n data[offset] = v;`,\n i32: `\n data[offset] = v;`,\n 'vec2<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];`,\n 'vec3<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];`,\n 'vec4<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];`,\n 'mat2x2<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 4] = v[2];\n data[offset + 5] = v[3];`,\n 'mat3x3<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];`,\n 'mat4x4<f32>': `\n for (let i = 0; i < 16; i++) {\n data[offset + i] = v[i];\n }`,\n 'mat3x2<f32>': loopMatrix(3, 2),\n 'mat4x2<f32>': loopMatrix(4, 2),\n 'mat2x3<f32>': loopMatrix(2, 3),\n 'mat4x3<f32>': loopMatrix(4, 3),\n 'mat2x4<f32>': loopMatrix(2, 4),\n 'mat3x4<f32>': loopMatrix(3, 4),\n};\n\nexport const uboSyncFunctionsWGSL: Record<UNIFORM_TYPES_SINGLE, string> = {\n ...uboSyncFunctionsSTD40,\n 'mat2x2<f32>': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n `,\n};\n"],"names":[],"mappings":";AAEA,SAAS,UAAA,CAAW,KAAa,GACjC,EAAA;AACI,EAAA,MAAM,QAAQ,GAAM,GAAA,GAAA,CAAA;AAEpB,EAAO,OAAA,CAAA;AAAA,4BAAA,EACmB,KAAK,CAAA;AAAA,iCACA,EAAA,GAAG,oBAAoB,GAAG,CAAA;AAAA;AAAA,IAAA,CAAA,CAAA;AAG7D,CAAA;AAEO,MAAM,qBAA8D,GAAA;AAAA,EACvE,GAAK,EAAA,CAAA;AAAA,yBAAA,CAAA;AAAA,EAEL,GAAK,EAAA,CAAA;AAAA,yBAAA,CAAA;AAAA,EAEL,WAAa,EAAA,CAAA;AAAA;AAAA,gCAAA,CAAA;AAAA,EAGb,WAAa,EAAA,CAAA;AAAA;AAAA;AAAA,gCAAA,CAAA;AAAA,EAIb,WAAa,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,gCAAA,CAAA;AAAA,EAKb,aAAe,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,gCAAA,CAAA;AAAA,EAKf,aAAe,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAAA,CAAA;AAAA,EAUf,aAAe,EAAA,CAAA;AAAA;AAAA;AAAA,SAAA,CAAA;AAAA,EAIf,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9B,aAAA,EAAe,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA;AAClC,EAAA;AAEO,MAAM,oBAA6D,GAAA;AAAA,EACtE,GAAG,qBAAA;AAAA,EACH,aAAe,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAMnB;;;;"}

View File

@@ -0,0 +1,10 @@
import type { UNIFORM_TYPES, UniformData } from '../types';
export interface UniformParserDefinition {
type: UNIFORM_TYPES;
test(data: UniformData): boolean;
ubo?: string;
uboWgsl?: string;
uboStd40?: string;
uniform?: string;
}
export declare const uniformParsers: UniformParserDefinition[];

View File

@@ -0,0 +1,117 @@
'use strict';
"use strict";
const uniformParsers = [
// uploading pixi matrix object to mat3
{
type: "mat3x3<f32>",
test: (data) => {
const value = data.value;
return value.a !== void 0;
},
ubo: `
var matrix = uv[name].toArray(true);
data[offset] = matrix[0];
data[offset + 1] = matrix[1];
data[offset + 2] = matrix[2];
data[offset + 4] = matrix[3];
data[offset + 5] = matrix[4];
data[offset + 6] = matrix[5];
data[offset + 8] = matrix[6];
data[offset + 9] = matrix[7];
data[offset + 10] = matrix[8];
`,
uniform: `
gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));
`
},
// uploading a pixi rectangle as a vec4
{
type: "vec4<f32>",
test: (data) => data.type === "vec4<f32>" && data.size === 1 && data.value.width !== void 0,
ubo: `
v = uv[name];
data[offset] = v.x;
data[offset + 1] = v.y;
data[offset + 2] = v.width;
data[offset + 3] = v.height;
`,
uniform: `
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {
cv[0] = v.x;
cv[1] = v.y;
cv[2] = v.width;
cv[3] = v.height;
gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);
}
`
},
// uploading a pixi point as a vec2
{
type: "vec2<f32>",
test: (data) => data.type === "vec2<f32>" && data.size === 1 && data.value.x !== void 0,
ubo: `
v = uv[name];
data[offset] = v.x;
data[offset + 1] = v.y;
`,
uniform: `
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.x || cv[1] !== v.y) {
cv[0] = v.x;
cv[1] = v.y;
gl.uniform2f(ud[name].location, v.x, v.y);
}
`
},
// uploading a pixi color as a vec4
{
type: "vec4<f32>",
test: (data) => data.type === "vec4<f32>" && data.size === 1 && data.value.red !== void 0,
ubo: `
v = uv[name];
data[offset] = v.red;
data[offset + 1] = v.green;
data[offset + 2] = v.blue;
data[offset + 3] = v.alpha;
`,
uniform: `
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
cv[3] = v.alpha;
gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);
}
`
},
// uploading a pixi color as a vec3
{
type: "vec3<f32>",
test: (data) => data.type === "vec3<f32>" && data.size === 1 && data.value.red !== void 0,
ubo: `
v = uv[name];
data[offset] = v.red;
data[offset + 1] = v.green;
data[offset + 2] = v.blue;
`,
uniform: `
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
gl.uniform3f(ud[name].location, v.red, v.green, v.blue);
}
`
}
];
exports.uniformParsers = uniformParsers;
//# sourceMappingURL=uniformParsers.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,115 @@
"use strict";
const uniformParsers = [
// uploading pixi matrix object to mat3
{
type: "mat3x3<f32>",
test: (data) => {
const value = data.value;
return value.a !== void 0;
},
ubo: `
var matrix = uv[name].toArray(true);
data[offset] = matrix[0];
data[offset + 1] = matrix[1];
data[offset + 2] = matrix[2];
data[offset + 4] = matrix[3];
data[offset + 5] = matrix[4];
data[offset + 6] = matrix[5];
data[offset + 8] = matrix[6];
data[offset + 9] = matrix[7];
data[offset + 10] = matrix[8];
`,
uniform: `
gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));
`
},
// uploading a pixi rectangle as a vec4
{
type: "vec4<f32>",
test: (data) => data.type === "vec4<f32>" && data.size === 1 && data.value.width !== void 0,
ubo: `
v = uv[name];
data[offset] = v.x;
data[offset + 1] = v.y;
data[offset + 2] = v.width;
data[offset + 3] = v.height;
`,
uniform: `
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {
cv[0] = v.x;
cv[1] = v.y;
cv[2] = v.width;
cv[3] = v.height;
gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);
}
`
},
// uploading a pixi point as a vec2
{
type: "vec2<f32>",
test: (data) => data.type === "vec2<f32>" && data.size === 1 && data.value.x !== void 0,
ubo: `
v = uv[name];
data[offset] = v.x;
data[offset + 1] = v.y;
`,
uniform: `
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.x || cv[1] !== v.y) {
cv[0] = v.x;
cv[1] = v.y;
gl.uniform2f(ud[name].location, v.x, v.y);
}
`
},
// uploading a pixi color as a vec4
{
type: "vec4<f32>",
test: (data) => data.type === "vec4<f32>" && data.size === 1 && data.value.red !== void 0,
ubo: `
v = uv[name];
data[offset] = v.red;
data[offset + 1] = v.green;
data[offset + 2] = v.blue;
data[offset + 3] = v.alpha;
`,
uniform: `
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
cv[3] = v.alpha;
gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);
}
`
},
// uploading a pixi color as a vec3
{
type: "vec3<f32>",
test: (data) => data.type === "vec3<f32>" && data.size === 1 && data.value.red !== void 0,
ubo: `
v = uv[name];
data[offset] = v.red;
data[offset + 1] = v.green;
data[offset + 2] = v.blue;
`,
uniform: `
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
gl.uniform3f(ud[name].location, v.red, v.green, v.blue);
}
`
}
];
export { uniformParsers };
//# sourceMappingURL=uniformParsers.mjs.map

File diff suppressed because one or more lines are too long