diff --git a/TODO.txt b/TODO.txt index 9b66b79..76c4f07 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,7 +1,15 @@ TODO: WebGPU - std140 problem with uniform buffers + std140 + Right now, buildStruct packs an array, which is changed to a typedarray and fed to a GPUBuffer + That limits the type to whatever the typedarray is + Instead, we need to represent the type of each value, and write it as such + Create an array buffer + Create a Float32Array view into it, and an Int32Array view + Transcribe the values into these views + Return the array buffer + Write an explanation of the rain pass (and include images) Compute diff --git a/js/rainPass.js b/js/rainPass.js index 76ca6db..fd4f79e 100644 --- a/js/rainPass.js +++ b/js/rainPass.js @@ -156,7 +156,7 @@ export default (regl, config) => { const screenSize = [1, 1]; const { mat4, vec3 } = glMatrix; const camera = mat4.create(); - const translation = vec3.set(vec3.create(), 0, 0.5 / numRows, -1); + const translation = vec3.set(vec3.create(), 0, 0, -1); const scale = vec3.set(vec3.create(), 1, 1, 1); const transform = mat4.create(); mat4.translate(transform, transform, translation); diff --git a/js/webgpu_main.js b/js/webgpu_main.js index e22fb37..1320846 100644 --- a/js/webgpu_main.js +++ b/js/webgpu_main.js @@ -176,7 +176,7 @@ export default async (canvas, config) => { }); const camera = mat4.create(); - const translation = vec3.set(vec3.create(), 0, 0.5 / numRows, -1); + const translation = vec3.set(vec3.create(), 0, 0, -1); const scale = vec3.set(vec3.create(), 1, 1, 1); const transform = mat4.create(); mat4.translate(transform, transform, translation); diff --git a/shaders/rainRenderPass.wgsl b/shaders/rainRenderPass.wgsl index 8160012..74b9557 100644 --- a/shaders/rainRenderPass.wgsl +++ b/shaders/rainRenderPass.wgsl @@ -58,14 +58,12 @@ struct VertexOutput { f32(config.numRows) ); position = 1.0 - position * 2.0; - position = position * scene.screenSize; + // position = position * scene.screenSize; var depth:f32 = 0.0; - var pos: vec4 = vec4(position, depth, 1.0); - // pos.x = pos.x / glyphHeightToWidth; - // pos = scene.camera * scene.transform * pos; + pos = scene.camera * scene.transform * pos; return VertexOutput( pos,