Mercurial > games > semicongine
comparison examples/E01_hello_triangle.nim @ 335:f05b4bef44d1
fix: first example
| author | Sam <sam@basx.dev> |
|---|---|
| date | Mon, 04 Sep 2023 00:55:35 +0700 |
| parents | b145a05c2459 |
| children | 887ddc8d45fd |
comparison
equal
deleted
inserted
replaced
| 334:2533f524bdb6 | 335:f05b4bef44d1 |
|---|---|
| 1 import std/tables | |
| 2 | |
| 1 import ../src/semicongine | 3 import ../src/semicongine |
| 2 | 4 |
| 3 | 5 # shader setup |
| 4 const | 6 const |
| 5 inputs = @[ | 7 shaderConfiguration = createShaderConfiguration( |
| 6 attr[Vec3f]("position"), | 8 inputs=[ |
| 7 attr[Vec4f]("color"), | 9 attr[Vec3f]("position"), |
| 8 ] | 10 attr[Vec4f]("color"), |
| 9 intermediate = @[attr[Vec4f]("outcolor")] | 11 ], |
| 10 outputs = @[attr[Vec4f]("color")] | 12 intermediates=[attr[Vec4f]("outcolor")], |
| 11 (vertexCode, fragmentCode) = compileVertexFragmentShaderSet( | 13 outputs=[attr[Vec4f]("color")], |
| 12 inputs=inputs, | 14 vertexCode="gl_Position = vec4(position, 1.0); outcolor = color;", |
| 13 intermediate=intermediate, | |
| 14 outputs=outputs, | |
| 15 vertexCode=""" | |
| 16 gl_Position = vec4(position, 1.0); | |
| 17 outcolor = color; | |
| 18 """, | |
| 19 fragmentCode="color = outcolor;", | 15 fragmentCode="color = outcolor;", |
| 20 ) | 16 ) |
| 21 | 17 |
| 18 # scene setup | |
| 22 var | 19 var |
| 23 triangle = newScene("scene", newEntity( | 20 triangle = Scene(name: "scene", |
| 24 "triangle", | 21 meshes: @[newMesh( |
| 25 {"mesh": Component(newMesh( | |
| 26 [newVec3f(-0.5, 0.5), newVec3f(0, -0.5), newVec3f(0.5, 0.5)], | 22 [newVec3f(-0.5, 0.5), newVec3f(0, -0.5), newVec3f(0.5, 0.5)], |
| 27 [newVec4f(1, 0, 0, 1), newVec4f(0, 1, 0, 1), newVec4f(0, 0, 1, 1)], | 23 [newVec4f(1, 0, 0, 1), newVec4f(0, 1, 0, 1), newVec4f(0, 0, 1, 1)], |
| 28 ))} | 24 material=Material(name: "") |
| 29 )) | 25 )] |
| 26 ) | |
| 30 myengine = initEngine("Hello triangle") | 27 myengine = initEngine("Hello triangle") |
| 31 renderPass = myengine.gpuDevice.simpleForwardRenderPass(vertexCode, fragmentCode) | |
| 32 | 28 |
| 33 myengine.setRenderer(renderPass) | 29 myengine.initRenderer({"": shaderConfiguration}.toTable) |
| 34 myengine.addScene(triangle, inputs, @[], transformAttribute="") | 30 myengine.addScene(triangle) |
| 35 | 31 |
| 36 while myengine.updateInputs() == Running and not myengine.keyWasPressed(Escape): | 32 while myengine.updateInputs() == Running and not myengine.keyWasPressed(Escape): |
| 37 myengine.renderScene(triangle) | 33 myengine.renderScene(triangle) |
| 38 | 34 |
| 39 myengine.destroy() | 35 myengine.destroy() |
