Mercurial > games > semicongine
diff examples/hello_triangle.nim @ 33:94c38e4b5782
did: refactoring, move more from make to nimscript
author | Sam <sam@basx.dev> |
---|---|
date | Sun, 15 Jan 2023 23:23:54 +0700 |
parents | 9edca5dc4e93 |
children | 7f99b21a8777 |
line wrap: on
line diff
--- a/examples/hello_triangle.nim Sat Jan 14 23:34:50 2023 +0700 +++ b/examples/hello_triangle.nim Sun Jan 15 23:23:54 2023 +0700 @@ -17,25 +17,11 @@ VertexDataA = object position: PositionAttribute[Vec2[float32]] color: ColorAttribute[Vec3[float32]] - Uniforms = object - mat: Descriptor[Mat44[float32]] - dt: Descriptor[float32] -var pipeline: RenderPipeline[VertexDataA, Uniforms] +var pipeline: RenderPipeline[VertexDataA, void] -var pos = 0'f32; -var uniforms = Uniforms( - mat: Descriptor[Mat44[float32]](value: Unit44f32), - dt: Descriptor[float32](value: 0'f32), -) -var scaledir = 1'f32 proc globalUpdate(engine: var Engine, dt: float32) = - uniforms.mat.value = uniforms.mat.value * scale3d(1 + scaledir * dt, 1 + scaledir * dt, 0'f32) - if uniforms.mat.value[0, 0] > 2'f32 or uniforms.mat.value[0, 0] < 0.5'f32: - scaledir = - scaledir - for buffer in pipeline.uniformBuffers: - buffer.updateData(uniforms) - echo uniforms.mat.value + discard # vertex data (types must match the above VertexAttributes) const @@ -65,22 +51,11 @@ triangle.parts.add trianglemesh # upload data, prepare shaders, etc - const vertexShader = generateVertexShaderCode[VertexDataA, Uniforms]( - # have 1 at: - # [2][0] [0][3] - # "out_position = vec4(in_position[0] + uniforms.mat[0][0], in_position[1] + uniforms.mat[0][0], 0, 1);" - "out_position = uniforms.mat * vec4(in_position, 0, 1);" - # "out_position = vec4(in_position, 0, 1);" + const vertexShader = generateVertexShaderCode[VertexDataA, void]( + # "out_position = uniforms.mat * vec4(in_position, 0, 1);" ) const fragmentShader = generateFragmentShaderCode[VertexDataA]() - static: - echo "--------------" - for (i, line) in enumerate(vertexShader.splitLines()): - echo $(i + 1) & " " & line - echo "--------------" - echo fragmentShader - echo "--------------" - pipeline = setupPipeline[VertexDataA, Uniforms, uint16]( + pipeline = setupPipeline[VertexDataA, void, uint16]( myengine, triangle, vertexShader,