mirror of
https://github.com/Rezmason/matrix.git
synced 2026-04-14 12:29:30 -07:00
They removed [[block]] from WGSL struct declarations.
This commit is contained in:
@@ -50,7 +50,7 @@ export default async (canvas, config) => {
|
||||
GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_DST,
|
||||
};
|
||||
|
||||
const timeUniforms = structs.from(`[[block]] struct Time { seconds : f32; frames : i32; };`).Time;
|
||||
const timeUniforms = structs.from(`struct Time { seconds : f32; frames : i32; };`).Time;
|
||||
const timeBuffer = makeUniformBuffer(device, timeUniforms);
|
||||
|
||||
const context = {
|
||||
|
||||
@@ -123,7 +123,7 @@ const parseAttributes = (str) => {
|
||||
return attributes;
|
||||
};
|
||||
|
||||
const parseStructLayout = (identifier, body, isBlock, structLayouts) => {
|
||||
const parseStructLayout = (identifier, body, structLayouts) => {
|
||||
const fields = [];
|
||||
let byteOffset = 0;
|
||||
const lines = body
|
||||
@@ -154,7 +154,7 @@ const parseStructLayout = (identifier, body, isBlock, structLayouts) => {
|
||||
const minSizeInBytes = byteOffset;
|
||||
const align = Math.max(...fields.map((field) => field.align));
|
||||
const size = Math.ceil(minSizeInBytes / align) * align;
|
||||
return { identifier, isBlock, fields, size, align };
|
||||
return { identifier, fields, size, align };
|
||||
};
|
||||
|
||||
const parseStructLayoutsFromShader = (wgsl) => {
|
||||
@@ -164,10 +164,10 @@ const parseStructLayoutsFromShader = (wgsl) => {
|
||||
.replace(/\s+/gm, " "); // convert all contiguous whitespace to single space characters
|
||||
|
||||
const structLayouts = {};
|
||||
const structMatches = Array.from(wgsl.matchAll(/(\[\[block\]\])? ?struct (\w+) ?\{(.*?)\};/g)); // [[block]] struct Foo {...}
|
||||
const structMatches = Array.from(wgsl.matchAll(/struct (\w+) ?\{(.*?)\};/g)); // struct Foo {...}
|
||||
for (const structMatch of structMatches) {
|
||||
const [_, block, identifier, body] = structMatch;
|
||||
const layout = parseStructLayout(identifier, body, block != null, structLayouts);
|
||||
const [_, identifier, body] = structMatch;
|
||||
const layout = parseStructLayout(identifier, body, structLayouts);
|
||||
if (layout != null) {
|
||||
structLayouts[layout.identifier] = layout;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
let ONE_OVER_SQRT_2PI = 0.39894;
|
||||
|
||||
[[block]] struct Config {
|
||||
struct Config {
|
||||
bloomRadius : f32;
|
||||
direction : vec2<f32>;
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[[block]] struct Config {
|
||||
struct Config {
|
||||
bloomStrength : f32;
|
||||
pyramidHeight : f32;
|
||||
};
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
[[block]] struct Config {
|
||||
struct Config {
|
||||
ditherMagnitude : f32;
|
||||
backgroundColor : vec3<f32>;
|
||||
};
|
||||
|
||||
[[block]] struct Palette {
|
||||
struct Palette {
|
||||
colors : array<vec3<f32>, 512>;
|
||||
};
|
||||
|
||||
[[block]] struct Time {
|
||||
struct Time {
|
||||
seconds : f32;
|
||||
frames : i32;
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// This shader module is the star of the show.
|
||||
// It is where the cell states update and the symbols get drawn to the screen.
|
||||
|
||||
[[block]] struct Config {
|
||||
struct Config {
|
||||
// common properties used for compute and rendering
|
||||
animationSpeed : f32;
|
||||
glyphSequenceLength : i32;
|
||||
@@ -41,20 +41,20 @@
|
||||
};
|
||||
|
||||
// The properties that change over time get their own buffer.
|
||||
[[block]] struct Time {
|
||||
struct Time {
|
||||
seconds : f32;
|
||||
frames : i32;
|
||||
};
|
||||
|
||||
// The properties related to the size of the canvas get their own buffer.
|
||||
[[block]] struct Scene {
|
||||
struct Scene {
|
||||
screenSize : vec2<f32>;
|
||||
camera : mat4x4<f32>;
|
||||
transform : mat4x4<f32>;
|
||||
};
|
||||
|
||||
// The array of cells that the compute shader updates, and the fragment shader draws.
|
||||
[[block]] struct CellData {
|
||||
struct CellData {
|
||||
cells: array<vec4<f32>>;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
[[block]] struct Config {
|
||||
struct Config {
|
||||
ditherMagnitude : f32;
|
||||
backgroundColor : vec3<f32>;
|
||||
};
|
||||
|
||||
[[block]] struct Time {
|
||||
struct Time {
|
||||
seconds : f32;
|
||||
frames : i32;
|
||||
};
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
[[block]] struct Config {
|
||||
struct Config {
|
||||
ditherMagnitude : f32;
|
||||
backgroundColor : vec3<f32>;
|
||||
};
|
||||
|
||||
[[block]] struct Time {
|
||||
struct Time {
|
||||
seconds : f32;
|
||||
frames : i32;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user