diff examples/hello_triangle.nim @ 35:7f99b21a8777

add: support for instance data
author Sam <sam@basx.dev>
date Mon, 16 Jan 2023 00:35:41 +0700
parents 94c38e4b5782
children c3c963e7c1a6
line wrap: on
line diff
--- a/examples/hello_triangle.nim	Mon Jan 16 00:03:20 2023 +0700
+++ b/examples/hello_triangle.nim	Mon Jan 16 00:35:41 2023 +0700
@@ -17,6 +17,7 @@
   VertexDataA = object
     position: PositionAttribute[Vec2[float32]]
     color: ColorAttribute[Vec3[float32]]
+    id: InstanceAttribute[Vec3[float32]]
 
 var pipeline: RenderPipeline[VertexDataA, void]
 
@@ -44,6 +45,7 @@
   trianglemesh.vertexData = VertexDataA(
     position: PositionAttribute[Vec2[float32]](data: triangle_pos),
     color: ColorAttribute[Vec3[float32]](data: triangle_color),
+    id: InstanceAttribute[Vec3[float32]](data: @[Vec3[float32]([0.5'f32, 0.5'f32, 0.5'f32])]),
   )
   # build a single-object scene graph
   var triangle = new Thing
@@ -51,9 +53,7 @@
   triangle.parts.add trianglemesh
 
   # upload data, prepare shaders, etc
-  const vertexShader = generateVertexShaderCode[VertexDataA, void](
-    # "out_position = uniforms.mat * vec4(in_position, 0, 1);"
-  )
+  const vertexShader = generateVertexShaderCode[VertexDataA, void]()
   const fragmentShader = generateFragmentShaderCode[VertexDataA]()
   pipeline = setupPipeline[VertexDataA, void, uint16](
     myengine,