comparison tests/test_vulkan_wrapper.nim @ 123:55be3579dc30

did: refactor mesh code, prepare for instance-data
author Sam <sam@basx.dev>
date Mon, 10 Apr 2023 00:53:16 +0700
parents 506090173619
children cb9e27a30165
comparison
equal deleted inserted replaced
122:506090173619 123:55be3579dc30
55 # INIT RENDERER: 55 # INIT RENDERER:
56 const 56 const
57 vertexInput = @[ 57 vertexInput = @[
58 attr[Vec3f]("position"), 58 attr[Vec3f]("position"),
59 attr[Vec3f]("color"), 59 attr[Vec3f]("color"),
60 attr[Mat4]("transform", perInstance=true) 60 attr[Vec3f]("translate", perInstance=true)
61 ] 61 ]
62 vertexOutput = @[attr[Vec3f]("outcolor")] 62 vertexOutput = @[attr[Vec3f]("outcolor")]
63 uniforms = @[attr[float32]("time")] 63 uniforms = @[attr[float32]("time")]
64 fragOutput = @[attr[Vec4f]("color")] 64 fragOutput = @[attr[Vec4f]("color")]
65 vertexCode = compileGlslShader( 65 vertexCode = compileGlslShader(
85 if res != VK_SUCCESS: 85 if res != VK_SUCCESS:
86 raise newException(Exception, "Unable to create swapchain") 86 raise newException(Exception, "Unable to create swapchain")
87 87
88 # INIT SCENE 88 # INIT SCENE
89 var time = initShaderGlobal("time", 0.0'f32) 89 var time = initShaderGlobal("time", 0.0'f32)
90 #[
90 var thescene = Scene( 91 var thescene = Scene(
91 name: "main", 92 name: "main",
92 root: newEntity("root", 93 root: newEntity("root",
93 newEntity("stuff", time), 94 newEntity("stuff", time),
94 newEntity("triangle1", newMesh( 95 newEntity("triangle1", newMesh(
121 indices=[[0'u32, 2'u32, 1'u32]], 122 indices=[[0'u32, 2'u32, 1'u32]],
122 autoResize=false 123 autoResize=false
123 )), 124 )),
124 ) 125 )
125 ) 126 )
127 ]#
128 var mymesh = newMesh(
129 positions=[newVec3f(0.0, -0.5), newVec3f(0.5, 0.5), newVec3f(-0.5, 0.5)],
130 colors=[newVec3f(1.0, 0.0, 0.0), newVec3f(0.0, 1.0, 0.0), newVec3f(0.0, 0.0, 1.0)],
131 )
132 setInstanceData[Vec3f](mymesh, "translate", @[newVec3f(0.3, 0.3)])
133 var thescene = Scene(
134 name: "main",
135 root: newEntity("root",
136 newEntity("stuff", time),
137 newEntity("triangle", mymesh),
138 )
139 )
126 thescene.setupDrawables(renderPass) 140 thescene.setupDrawables(renderPass)
127 swapchain.setupUniforms(thescene) 141 swapchain.setupUniforms(thescene)
128 142
129 # MAINLOOP 143 # MAINLOOP
130 echo "Setup successfull, start rendering" 144 echo "Setup successfull, start rendering"