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,14 @@
export declare const colorBit: {
name: string;
vertex: {
header: string;
main: string;
};
};
export declare const colorBitGl: {
name: string;
vertex: {
header: string;
main: string;
};
};

View File

@@ -0,0 +1,41 @@
'use strict';
"use strict";
const colorBit = {
name: "color-bit",
vertex: {
header: (
/* wgsl */
`
@in aColor: vec4<f32>;
`
),
main: (
/* wgsl */
`
vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);
`
)
}
};
const colorBitGl = {
name: "color-bit",
vertex: {
header: (
/* glsl */
`
in vec4 aColor;
`
),
main: (
/* glsl */
`
vColor *= vec4(aColor.rgb * aColor.a, aColor.a);
`
)
}
};
exports.colorBit = colorBit;
exports.colorBitGl = colorBitGl;
//# sourceMappingURL=colorBit.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"colorBit.js","sources":["../../../../src/rendering/high-shader/shader-bits/colorBit.ts"],"sourcesContent":["export const colorBit = {\n name: 'color-bit',\n vertex: {\n header: /* wgsl */`\n @in aColor: vec4<f32>;\n `,\n main: /* wgsl */`\n vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);\n `\n }\n};\n\nexport const colorBitGl = {\n name: 'color-bit',\n vertex: {\n header: /* glsl */`\n in vec4 aColor;\n `,\n main: /* glsl */`\n vColor *= vec4(aColor.rgb * aColor.a, aColor.a);\n `\n }\n};\n"],"names":[],"mappings":";;;AAAO,MAAM,QAAW,GAAA;AAAA,EACpB,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAGlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AACJ,EAAA;AAEO,MAAM,UAAa,GAAA;AAAA,EACtB,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAGlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AACJ;;;;;"}

View File

@@ -0,0 +1,38 @@
"use strict";
const colorBit = {
name: "color-bit",
vertex: {
header: (
/* wgsl */
`
@in aColor: vec4<f32>;
`
),
main: (
/* wgsl */
`
vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);
`
)
}
};
const colorBitGl = {
name: "color-bit",
vertex: {
header: (
/* glsl */
`
in vec4 aColor;
`
),
main: (
/* glsl */
`
vColor *= vec4(aColor.rgb * aColor.a, aColor.a);
`
)
}
};
export { colorBit, colorBitGl };
//# sourceMappingURL=colorBit.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"colorBit.mjs","sources":["../../../../src/rendering/high-shader/shader-bits/colorBit.ts"],"sourcesContent":["export const colorBit = {\n name: 'color-bit',\n vertex: {\n header: /* wgsl */`\n @in aColor: vec4<f32>;\n `,\n main: /* wgsl */`\n vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);\n `\n }\n};\n\nexport const colorBitGl = {\n name: 'color-bit',\n vertex: {\n header: /* glsl */`\n in vec4 aColor;\n `,\n main: /* glsl */`\n vColor *= vec4(aColor.rgb * aColor.a, aColor.a);\n `\n }\n};\n"],"names":[],"mappings":";AAAO,MAAM,QAAW,GAAA;AAAA,EACpB,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAGlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AACJ,EAAA;AAEO,MAAM,UAAa,GAAA;AAAA,EACtB,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAGlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AACJ;;;;"}

View File

@@ -0,0 +1,3 @@
import type { HighShaderBit } from '../compiler/types';
export declare function generateTextureBatchBit(maxTextures: number): HighShaderBit;
export declare function generateTextureBatchBitGl(maxTextures: number): HighShaderBit;

View File

@@ -0,0 +1,129 @@
'use strict';
"use strict";
const textureBatchBitGpuCache = {};
function generateBindingSrc(maxTextures) {
const src = [];
if (maxTextures === 1) {
src.push("@group(1) @binding(0) var textureSource1: texture_2d<f32>;");
src.push("@group(1) @binding(1) var textureSampler1: sampler;");
} else {
let bindingIndex = 0;
for (let i = 0; i < maxTextures; i++) {
src.push(`@group(1) @binding(${bindingIndex++}) var textureSource${i + 1}: texture_2d<f32>;`);
src.push(`@group(1) @binding(${bindingIndex++}) var textureSampler${i + 1}: sampler;`);
}
}
return src.join("\n");
}
function generateSampleSrc(maxTextures) {
const src = [];
if (maxTextures === 1) {
src.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");
} else {
src.push("switch vTextureId {");
for (let i = 0; i < maxTextures; i++) {
if (i === maxTextures - 1) {
src.push(` default:{`);
} else {
src.push(` case ${i}:{`);
}
src.push(` outColor = textureSampleGrad(textureSource${i + 1}, textureSampler${i + 1}, vUV, uvDx, uvDy);`);
src.push(` break;}`);
}
src.push(`}`);
}
return src.join("\n");
}
function generateTextureBatchBit(maxTextures) {
if (!textureBatchBitGpuCache[maxTextures]) {
textureBatchBitGpuCache[maxTextures] = {
name: "texture-batch-bit",
vertex: {
header: `
@in aTextureIdAndRound: vec2<u32>;
@out @interpolate(flat) vTextureId : u32;
`,
main: `
vTextureId = aTextureIdAndRound.y;
`,
end: `
if(aTextureIdAndRound.x == 1)
{
vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`
},
fragment: {
header: `
@in @interpolate(flat) vTextureId: u32;
${generateBindingSrc(maxTextures)}
`,
main: `
var uvDx = dpdx(vUV);
var uvDy = dpdy(vUV);
${generateSampleSrc(maxTextures)}
`
}
};
}
return textureBatchBitGpuCache[maxTextures];
}
const textureBatchBitGlCache = {};
function generateSampleGlSrc(maxTextures) {
const src = [];
for (let i = 0; i < maxTextures; i++) {
if (i > 0) {
src.push("else");
}
if (i < maxTextures - 1) {
src.push(`if(vTextureId < ${i}.5)`);
}
src.push("{");
src.push(` outColor = texture(uTextures[${i}], vUV);`);
src.push("}");
}
return src.join("\n");
}
function generateTextureBatchBitGl(maxTextures) {
if (!textureBatchBitGlCache[maxTextures]) {
textureBatchBitGlCache[maxTextures] = {
name: "texture-batch-bit",
vertex: {
header: `
in vec2 aTextureIdAndRound;
out float vTextureId;
`,
main: `
vTextureId = aTextureIdAndRound.y;
`,
end: `
if(aTextureIdAndRound.x == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`
},
fragment: {
header: `
in float vTextureId;
uniform sampler2D uTextures[${maxTextures}];
`,
main: `
${generateSampleGlSrc(maxTextures)}
`
}
};
}
return textureBatchBitGlCache[maxTextures];
}
exports.generateTextureBatchBit = generateTextureBatchBit;
exports.generateTextureBatchBitGl = generateTextureBatchBitGl;
//# sourceMappingURL=generateTextureBatchBit.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,126 @@
"use strict";
const textureBatchBitGpuCache = {};
function generateBindingSrc(maxTextures) {
const src = [];
if (maxTextures === 1) {
src.push("@group(1) @binding(0) var textureSource1: texture_2d<f32>;");
src.push("@group(1) @binding(1) var textureSampler1: sampler;");
} else {
let bindingIndex = 0;
for (let i = 0; i < maxTextures; i++) {
src.push(`@group(1) @binding(${bindingIndex++}) var textureSource${i + 1}: texture_2d<f32>;`);
src.push(`@group(1) @binding(${bindingIndex++}) var textureSampler${i + 1}: sampler;`);
}
}
return src.join("\n");
}
function generateSampleSrc(maxTextures) {
const src = [];
if (maxTextures === 1) {
src.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");
} else {
src.push("switch vTextureId {");
for (let i = 0; i < maxTextures; i++) {
if (i === maxTextures - 1) {
src.push(` default:{`);
} else {
src.push(` case ${i}:{`);
}
src.push(` outColor = textureSampleGrad(textureSource${i + 1}, textureSampler${i + 1}, vUV, uvDx, uvDy);`);
src.push(` break;}`);
}
src.push(`}`);
}
return src.join("\n");
}
function generateTextureBatchBit(maxTextures) {
if (!textureBatchBitGpuCache[maxTextures]) {
textureBatchBitGpuCache[maxTextures] = {
name: "texture-batch-bit",
vertex: {
header: `
@in aTextureIdAndRound: vec2<u32>;
@out @interpolate(flat) vTextureId : u32;
`,
main: `
vTextureId = aTextureIdAndRound.y;
`,
end: `
if(aTextureIdAndRound.x == 1)
{
vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`
},
fragment: {
header: `
@in @interpolate(flat) vTextureId: u32;
${generateBindingSrc(maxTextures)}
`,
main: `
var uvDx = dpdx(vUV);
var uvDy = dpdy(vUV);
${generateSampleSrc(maxTextures)}
`
}
};
}
return textureBatchBitGpuCache[maxTextures];
}
const textureBatchBitGlCache = {};
function generateSampleGlSrc(maxTextures) {
const src = [];
for (let i = 0; i < maxTextures; i++) {
if (i > 0) {
src.push("else");
}
if (i < maxTextures - 1) {
src.push(`if(vTextureId < ${i}.5)`);
}
src.push("{");
src.push(` outColor = texture(uTextures[${i}], vUV);`);
src.push("}");
}
return src.join("\n");
}
function generateTextureBatchBitGl(maxTextures) {
if (!textureBatchBitGlCache[maxTextures]) {
textureBatchBitGlCache[maxTextures] = {
name: "texture-batch-bit",
vertex: {
header: `
in vec2 aTextureIdAndRound;
out float vTextureId;
`,
main: `
vTextureId = aTextureIdAndRound.y;
`,
end: `
if(aTextureIdAndRound.x == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`
},
fragment: {
header: `
in float vTextureId;
uniform sampler2D uTextures[${maxTextures}];
`,
main: `
${generateSampleGlSrc(maxTextures)}
`
}
};
}
return textureBatchBitGlCache[maxTextures];
}
export { generateTextureBatchBit, generateTextureBatchBitGl };
//# sourceMappingURL=generateTextureBatchBit.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,18 @@
export declare const globalUniformsBit: {
name: string;
vertex: {
header: string;
};
};
export declare const globalUniformsUBOBitGl: {
name: string;
vertex: {
header: string;
};
};
export declare const globalUniformsBitGl: {
name: string;
vertex: {
header: string;
};
};

View File

@@ -0,0 +1,56 @@
'use strict';
"use strict";
const globalUniformsBit = {
name: "global-uniforms-bit",
vertex: {
header: (
/* wgsl */
`
struct GlobalUniforms {
uProjectionMatrix:mat3x3<f32>,
uWorldTransformMatrix:mat3x3<f32>,
uWorldColorAlpha: vec4<f32>,
uResolution: vec2<f32>,
}
@group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;
`
)
}
};
const globalUniformsUBOBitGl = {
name: "global-uniforms-ubo-bit",
vertex: {
header: (
/* glsl */
`
uniform globalUniforms {
mat3 uProjectionMatrix;
mat3 uWorldTransformMatrix;
vec4 uWorldColorAlpha;
vec2 uResolution;
};
`
)
}
};
const globalUniformsBitGl = {
name: "global-uniforms-bit",
vertex: {
header: (
/* glsl */
`
uniform mat3 uProjectionMatrix;
uniform mat3 uWorldTransformMatrix;
uniform vec4 uWorldColorAlpha;
uniform vec2 uResolution;
`
)
}
};
exports.globalUniformsBit = globalUniformsBit;
exports.globalUniformsBitGl = globalUniformsBitGl;
exports.globalUniformsUBOBitGl = globalUniformsUBOBitGl;
//# sourceMappingURL=globalUniformsBit.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"globalUniformsBit.js","sources":["../../../../src/rendering/high-shader/shader-bits/globalUniformsBit.ts"],"sourcesContent":["export const globalUniformsBit = {\n name: 'global-uniforms-bit',\n vertex: {\n header: /* wgsl */`\n struct GlobalUniforms {\n uProjectionMatrix:mat3x3<f32>,\n uWorldTransformMatrix:mat3x3<f32>,\n uWorldColorAlpha: vec4<f32>,\n uResolution: vec2<f32>,\n }\n\n @group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;\n `\n }\n};\n\nexport const globalUniformsUBOBitGl = {\n name: 'global-uniforms-ubo-bit',\n vertex: {\n header: /* glsl */`\n uniform globalUniforms {\n mat3 uProjectionMatrix;\n mat3 uWorldTransformMatrix;\n vec4 uWorldColorAlpha;\n vec2 uResolution;\n };\n `\n }\n};\n\nexport const globalUniformsBitGl = {\n name: 'global-uniforms-bit',\n vertex: {\n header: /* glsl */`\n uniform mat3 uProjectionMatrix;\n uniform mat3 uWorldTransformMatrix;\n uniform vec4 uWorldColorAlpha;\n uniform vec2 uResolution;\n `\n }\n\n};\n"],"names":[],"mappings":";;;AAAO,MAAM,iBAAoB,GAAA;AAAA,EAC7B,IAAM,EAAA,qBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAUtB;AACJ,EAAA;AAEO,MAAM,sBAAyB,GAAA;AAAA,EAClC,IAAM,EAAA,yBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAQtB;AACJ,EAAA;AAEO,MAAM,mBAAsB,GAAA;AAAA,EAC/B,IAAM,EAAA,qBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMtB;AAEJ;;;;;;"}

View File

@@ -0,0 +1,52 @@
"use strict";
const globalUniformsBit = {
name: "global-uniforms-bit",
vertex: {
header: (
/* wgsl */
`
struct GlobalUniforms {
uProjectionMatrix:mat3x3<f32>,
uWorldTransformMatrix:mat3x3<f32>,
uWorldColorAlpha: vec4<f32>,
uResolution: vec2<f32>,
}
@group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;
`
)
}
};
const globalUniformsUBOBitGl = {
name: "global-uniforms-ubo-bit",
vertex: {
header: (
/* glsl */
`
uniform globalUniforms {
mat3 uProjectionMatrix;
mat3 uWorldTransformMatrix;
vec4 uWorldColorAlpha;
vec2 uResolution;
};
`
)
}
};
const globalUniformsBitGl = {
name: "global-uniforms-bit",
vertex: {
header: (
/* glsl */
`
uniform mat3 uProjectionMatrix;
uniform mat3 uWorldTransformMatrix;
uniform vec4 uWorldColorAlpha;
uniform vec2 uResolution;
`
)
}
};
export { globalUniformsBit, globalUniformsBitGl, globalUniformsUBOBitGl };
//# sourceMappingURL=globalUniformsBit.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"globalUniformsBit.mjs","sources":["../../../../src/rendering/high-shader/shader-bits/globalUniformsBit.ts"],"sourcesContent":["export const globalUniformsBit = {\n name: 'global-uniforms-bit',\n vertex: {\n header: /* wgsl */`\n struct GlobalUniforms {\n uProjectionMatrix:mat3x3<f32>,\n uWorldTransformMatrix:mat3x3<f32>,\n uWorldColorAlpha: vec4<f32>,\n uResolution: vec2<f32>,\n }\n\n @group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;\n `\n }\n};\n\nexport const globalUniformsUBOBitGl = {\n name: 'global-uniforms-ubo-bit',\n vertex: {\n header: /* glsl */`\n uniform globalUniforms {\n mat3 uProjectionMatrix;\n mat3 uWorldTransformMatrix;\n vec4 uWorldColorAlpha;\n vec2 uResolution;\n };\n `\n }\n};\n\nexport const globalUniformsBitGl = {\n name: 'global-uniforms-bit',\n vertex: {\n header: /* glsl */`\n uniform mat3 uProjectionMatrix;\n uniform mat3 uWorldTransformMatrix;\n uniform vec4 uWorldColorAlpha;\n uniform vec2 uResolution;\n `\n }\n\n};\n"],"names":[],"mappings":";AAAO,MAAM,iBAAoB,GAAA;AAAA,EAC7B,IAAM,EAAA,qBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAUtB;AACJ,EAAA;AAEO,MAAM,sBAAyB,GAAA;AAAA,EAClC,IAAM,EAAA,yBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAQtB;AACJ,EAAA;AAEO,MAAM,mBAAsB,GAAA;AAAA,EAC/B,IAAM,EAAA,qBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMtB;AAEJ;;;;"}

View File

@@ -0,0 +1,24 @@
export declare const localUniformBit: {
name: string;
vertex: {
header: string;
main: string;
end: string;
};
};
export declare const localUniformBitGroup2: {
vertex: {
header: string;
main: string;
end: string;
};
name: string;
};
export declare const localUniformBitGl: {
name: string;
vertex: {
header: string;
main: string;
end: string;
};
};

View File

@@ -0,0 +1,80 @@
'use strict';
"use strict";
const localUniformBit = {
name: "local-uniform-bit",
vertex: {
header: (
/* wgsl */
`
struct LocalUniforms {
uTransformMatrix:mat3x3<f32>,
uColor:vec4<f32>,
uRound:f32,
}
@group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;
`
),
main: (
/* wgsl */
`
vColor *= localUniforms.uColor;
modelMatrix *= localUniforms.uTransformMatrix;
`
),
end: (
/* wgsl */
`
if(localUniforms.uRound == 1)
{
vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`
)
}
};
const localUniformBitGroup2 = {
...localUniformBit,
vertex: {
...localUniformBit.vertex,
// replace the group!
header: localUniformBit.vertex.header.replace("group(1)", "group(2)")
}
};
const localUniformBitGl = {
name: "local-uniform-bit",
vertex: {
header: (
/* glsl */
`
uniform mat3 uTransformMatrix;
uniform vec4 uColor;
uniform float uRound;
`
),
main: (
/* glsl */
`
vColor *= uColor;
modelMatrix = uTransformMatrix;
`
),
end: (
/* glsl */
`
if(uRound == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`
)
}
};
exports.localUniformBit = localUniformBit;
exports.localUniformBitGl = localUniformBitGl;
exports.localUniformBitGroup2 = localUniformBitGroup2;
//# sourceMappingURL=localUniformBit.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"localUniformBit.js","sources":["../../../../src/rendering/high-shader/shader-bits/localUniformBit.ts"],"sourcesContent":["export const localUniformBit = {\n name: 'local-uniform-bit',\n vertex: {\n header: /* wgsl */`\n\n struct LocalUniforms {\n uTransformMatrix:mat3x3<f32>,\n uColor:vec4<f32>,\n uRound:f32,\n }\n\n @group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `,\n main: /* wgsl */`\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n `,\n end: /* wgsl */`\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n },\n};\n\n// TODO this works, but i think down the road it will be better to manage groups automatically if there are clashes\nexport const localUniformBitGroup2 = {\n ...localUniformBit,\n vertex: {\n ...localUniformBit.vertex,\n // replace the group!\n header: localUniformBit.vertex.header.replace('group(1)', 'group(2)'),\n }\n};\n\nexport const localUniformBitGl = {\n name: 'local-uniform-bit',\n vertex: {\n header: /* glsl */`\n\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n `,\n main: /* glsl */`\n vColor *= uColor;\n modelMatrix = uTransformMatrix;\n `,\n end: /* glsl */`\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n },\n};\n"],"names":[],"mappings":";;;AAAO,MAAM,eAAkB,GAAA;AAAA,EAC3B,IAAM,EAAA,mBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAUlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAIhB,GAAA;AAAA;AAAA,MAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMnB;AACJ,EAAA;AAGO,MAAM,qBAAwB,GAAA;AAAA,EACjC,GAAG,eAAA;AAAA,EACH,MAAQ,EAAA;AAAA,IACJ,GAAG,eAAgB,CAAA,MAAA;AAAA;AAAA,IAEnB,QAAQ,eAAgB,CAAA,MAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,YAAY,UAAU,CAAA;AAAA,GACxE;AACJ,EAAA;AAEO,MAAM,iBAAoB,GAAA;AAAA,EAC7B,IAAM,EAAA,mBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAMlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAIhB,GAAA;AAAA;AAAA,MAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMnB;AACJ;;;;;;"}

View File

@@ -0,0 +1,76 @@
"use strict";
const localUniformBit = {
name: "local-uniform-bit",
vertex: {
header: (
/* wgsl */
`
struct LocalUniforms {
uTransformMatrix:mat3x3<f32>,
uColor:vec4<f32>,
uRound:f32,
}
@group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;
`
),
main: (
/* wgsl */
`
vColor *= localUniforms.uColor;
modelMatrix *= localUniforms.uTransformMatrix;
`
),
end: (
/* wgsl */
`
if(localUniforms.uRound == 1)
{
vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`
)
}
};
const localUniformBitGroup2 = {
...localUniformBit,
vertex: {
...localUniformBit.vertex,
// replace the group!
header: localUniformBit.vertex.header.replace("group(1)", "group(2)")
}
};
const localUniformBitGl = {
name: "local-uniform-bit",
vertex: {
header: (
/* glsl */
`
uniform mat3 uTransformMatrix;
uniform vec4 uColor;
uniform float uRound;
`
),
main: (
/* glsl */
`
vColor *= uColor;
modelMatrix = uTransformMatrix;
`
),
end: (
/* glsl */
`
if(uRound == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`
)
}
};
export { localUniformBit, localUniformBitGl, localUniformBitGroup2 };
//# sourceMappingURL=localUniformBit.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"localUniformBit.mjs","sources":["../../../../src/rendering/high-shader/shader-bits/localUniformBit.ts"],"sourcesContent":["export const localUniformBit = {\n name: 'local-uniform-bit',\n vertex: {\n header: /* wgsl */`\n\n struct LocalUniforms {\n uTransformMatrix:mat3x3<f32>,\n uColor:vec4<f32>,\n uRound:f32,\n }\n\n @group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `,\n main: /* wgsl */`\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n `,\n end: /* wgsl */`\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n },\n};\n\n// TODO this works, but i think down the road it will be better to manage groups automatically if there are clashes\nexport const localUniformBitGroup2 = {\n ...localUniformBit,\n vertex: {\n ...localUniformBit.vertex,\n // replace the group!\n header: localUniformBit.vertex.header.replace('group(1)', 'group(2)'),\n }\n};\n\nexport const localUniformBitGl = {\n name: 'local-uniform-bit',\n vertex: {\n header: /* glsl */`\n\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n `,\n main: /* glsl */`\n vColor *= uColor;\n modelMatrix = uTransformMatrix;\n `,\n end: /* glsl */`\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n },\n};\n"],"names":[],"mappings":";AAAO,MAAM,eAAkB,GAAA;AAAA,EAC3B,IAAM,EAAA,mBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAUlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAIhB,GAAA;AAAA;AAAA,MAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMnB;AACJ,EAAA;AAGO,MAAM,qBAAwB,GAAA;AAAA,EACjC,GAAG,eAAA;AAAA,EACH,MAAQ,EAAA;AAAA,IACJ,GAAG,eAAgB,CAAA,MAAA;AAAA;AAAA,IAEnB,QAAQ,eAAgB,CAAA,MAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,YAAY,UAAU,CAAA;AAAA,GACxE;AACJ,EAAA;AAEO,MAAM,iBAAoB,GAAA;AAAA,EAC7B,IAAM,EAAA,mBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAMlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAIhB,GAAA;AAAA;AAAA,MAAe,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMnB;AACJ;;;;"}

View File

@@ -0,0 +1,12 @@
export declare const roundPixelsBit: {
name: string;
vertex: {
header: string;
};
};
export declare const roundPixelsBitGl: {
name: string;
vertex: {
header: string;
};
};

View File

@@ -0,0 +1,35 @@
'use strict';
"use strict";
const roundPixelsBit = {
name: "round-pixels-bit",
vertex: {
header: (
/* wgsl */
`
fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>
{
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
}
`
)
}
};
const roundPixelsBitGl = {
name: "round-pixels-bit",
vertex: {
header: (
/* glsl */
`
vec2 roundPixels(vec2 position, vec2 targetSize)
{
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
}
`
)
}
};
exports.roundPixelsBit = roundPixelsBit;
exports.roundPixelsBitGl = roundPixelsBitGl;
//# sourceMappingURL=roundPixelsBit.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"roundPixelsBit.js","sources":["../../../../src/rendering/high-shader/shader-bits/roundPixelsBit.ts"],"sourcesContent":["export const roundPixelsBit = {\n name: 'round-pixels-bit',\n vertex: {\n header: /* wgsl */`\n fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32> \n {\n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n }\n};\n\nexport const roundPixelsBitGl = {\n name: 'round-pixels-bit',\n vertex: {\n header: /* glsl */` \n vec2 roundPixels(vec2 position, vec2 targetSize)\n { \n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n }\n};\n\n"],"names":[],"mappings":";;;AAAO,MAAM,cAAiB,GAAA;AAAA,EAC1B,IAAM,EAAA,kBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMtB;AACJ,EAAA;AAEO,MAAM,gBAAmB,GAAA;AAAA,EAC5B,IAAM,EAAA,kBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMtB;AACJ;;;;;"}

View File

@@ -0,0 +1,32 @@
"use strict";
const roundPixelsBit = {
name: "round-pixels-bit",
vertex: {
header: (
/* wgsl */
`
fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>
{
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
}
`
)
}
};
const roundPixelsBitGl = {
name: "round-pixels-bit",
vertex: {
header: (
/* glsl */
`
vec2 roundPixels(vec2 position, vec2 targetSize)
{
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
}
`
)
}
};
export { roundPixelsBit, roundPixelsBitGl };
//# sourceMappingURL=roundPixelsBit.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"roundPixelsBit.mjs","sources":["../../../../src/rendering/high-shader/shader-bits/roundPixelsBit.ts"],"sourcesContent":["export const roundPixelsBit = {\n name: 'round-pixels-bit',\n vertex: {\n header: /* wgsl */`\n fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32> \n {\n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n }\n};\n\nexport const roundPixelsBitGl = {\n name: 'round-pixels-bit',\n vertex: {\n header: /* glsl */` \n vec2 roundPixels(vec2 position, vec2 targetSize)\n { \n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n }\n};\n\n"],"names":[],"mappings":";AAAO,MAAM,cAAiB,GAAA;AAAA,EAC1B,IAAM,EAAA,kBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMtB;AACJ,EAAA;AAEO,MAAM,gBAAmB,GAAA;AAAA,EAC5B,IAAM,EAAA,kBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAMtB;AACJ;;;;"}

View File

@@ -0,0 +1,22 @@
export declare const textureBit: {
name: string;
vertex: {
header: string;
main: string;
};
fragment: {
header: string;
main: string;
};
};
export declare const textureBitGl: {
name: string;
vertex: {
header: string;
main: string;
};
fragment: {
header: string;
main: string;
};
};

View File

@@ -0,0 +1,79 @@
'use strict';
"use strict";
const textureBit = {
name: "texture-bit",
vertex: {
header: (
/* wgsl */
`
struct TextureUniforms {
uTextureMatrix:mat3x3<f32>,
}
@group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;
`
),
main: (
/* wgsl */
`
uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;
`
)
},
fragment: {
header: (
/* wgsl */
`
@group(2) @binding(0) var uTexture: texture_2d<f32>;
@group(2) @binding(1) var uSampler: sampler;
`
),
main: (
/* wgsl */
`
outColor = textureSample(uTexture, uSampler, vUV);
`
)
}
};
const textureBitGl = {
name: "texture-bit",
vertex: {
header: (
/* glsl */
`
uniform mat3 uTextureMatrix;
`
),
main: (
/* glsl */
`
uv = (uTextureMatrix * vec3(uv, 1.0)).xy;
`
)
},
fragment: {
header: (
/* glsl */
`
uniform sampler2D uTexture;
`
),
main: (
/* glsl */
`
outColor = texture(uTexture, vUV);
`
)
}
};
exports.textureBit = textureBit;
exports.textureBitGl = textureBitGl;
//# sourceMappingURL=textureBit.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"textureBit.js","sources":["../../../../src/rendering/high-shader/shader-bits/textureBit.ts"],"sourcesContent":["export const textureBit = {\n name: 'texture-bit',\n vertex: {\n header: /* wgsl */`\n\n struct TextureUniforms {\n uTextureMatrix:mat3x3<f32>,\n }\n\n @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;\n `,\n main: /* wgsl */`\n uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n },\n fragment: {\n header: /* wgsl */`\n @group(2) @binding(0) var uTexture: texture_2d<f32>;\n @group(2) @binding(1) var uSampler: sampler;\n\n \n `,\n main: /* wgsl */`\n outColor = textureSample(uTexture, uSampler, vUV);\n `\n }\n};\n\nexport const textureBitGl = {\n name: 'texture-bit',\n vertex: {\n header: /* glsl */`\n uniform mat3 uTextureMatrix;\n `,\n main: /* glsl */`\n uv = (uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n },\n fragment: {\n header: /* glsl */`\n uniform sampler2D uTexture;\n\n \n `,\n main: /* glsl */`\n outColor = texture(uTexture, vUV);\n `\n }\n};\n\n"],"names":[],"mappings":";;;AAAO,MAAM,UAAa,GAAA;AAAA,EACtB,IAAM,EAAA,aAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAQlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AAAA,EACA,QAAU,EAAA;AAAA,IACN,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAMlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AACJ,EAAA;AAEO,MAAM,YAAe,GAAA;AAAA,EACxB,IAAM,EAAA,aAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAGlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AAAA,EACA,QAAU,EAAA;AAAA,IACN,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAKlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AACJ;;;;;"}

View File

@@ -0,0 +1,76 @@
"use strict";
const textureBit = {
name: "texture-bit",
vertex: {
header: (
/* wgsl */
`
struct TextureUniforms {
uTextureMatrix:mat3x3<f32>,
}
@group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;
`
),
main: (
/* wgsl */
`
uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;
`
)
},
fragment: {
header: (
/* wgsl */
`
@group(2) @binding(0) var uTexture: texture_2d<f32>;
@group(2) @binding(1) var uSampler: sampler;
`
),
main: (
/* wgsl */
`
outColor = textureSample(uTexture, uSampler, vUV);
`
)
}
};
const textureBitGl = {
name: "texture-bit",
vertex: {
header: (
/* glsl */
`
uniform mat3 uTextureMatrix;
`
),
main: (
/* glsl */
`
uv = (uTextureMatrix * vec3(uv, 1.0)).xy;
`
)
},
fragment: {
header: (
/* glsl */
`
uniform sampler2D uTexture;
`
),
main: (
/* glsl */
`
outColor = texture(uTexture, vUV);
`
)
}
};
export { textureBit, textureBitGl };
//# sourceMappingURL=textureBit.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"textureBit.mjs","sources":["../../../../src/rendering/high-shader/shader-bits/textureBit.ts"],"sourcesContent":["export const textureBit = {\n name: 'texture-bit',\n vertex: {\n header: /* wgsl */`\n\n struct TextureUniforms {\n uTextureMatrix:mat3x3<f32>,\n }\n\n @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;\n `,\n main: /* wgsl */`\n uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n },\n fragment: {\n header: /* wgsl */`\n @group(2) @binding(0) var uTexture: texture_2d<f32>;\n @group(2) @binding(1) var uSampler: sampler;\n\n \n `,\n main: /* wgsl */`\n outColor = textureSample(uTexture, uSampler, vUV);\n `\n }\n};\n\nexport const textureBitGl = {\n name: 'texture-bit',\n vertex: {\n header: /* glsl */`\n uniform mat3 uTextureMatrix;\n `,\n main: /* glsl */`\n uv = (uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n },\n fragment: {\n header: /* glsl */`\n uniform sampler2D uTexture;\n\n \n `,\n main: /* glsl */`\n outColor = texture(uTexture, vUV);\n `\n }\n};\n\n"],"names":[],"mappings":";AAAO,MAAM,UAAa,GAAA;AAAA,EACtB,IAAM,EAAA,aAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAQlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AAAA,EACA,QAAU,EAAA;AAAA,IACN,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAMlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AACJ,EAAA;AAEO,MAAM,YAAe,GAAA;AAAA,EACxB,IAAM,EAAA,aAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACJ,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAGlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AAAA,EACA,QAAU,EAAA;AAAA,IACN,MAAA;AAAA;AAAA,MAAkB,CAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,IAKlB,IAAA;AAAA;AAAA,MAAgB,CAAA;AAAA;AAAA,QAAA,CAAA;AAAA,KAAA;AAAA,GAGpB;AACJ;;;;"}