comparison examples/E01_hello_triangle.nim @ 1059:9c364af8d3f0

did: tons of small improvments, on the way to make GPU sync (more) correct I guess
author sam <sam@basx.dev>
date Sun, 31 Mar 2024 22:11:50 +0700
parents c66503386e8b
children 4692be6e07eb 79c0f3271748
comparison
equal deleted inserted replaced
1058:7a0d5fc00f4f 1059:9c364af8d3f0
1 import std/tables 1 import std/tables
2 2
3 import ../src/semicongine 3 import ../semicongine
4 4
5 # shader setup 5 # shader setup
6 const 6 const
7 shaderConfiguration = createShaderConfiguration( 7 shaderConfiguration = createShaderConfiguration(
8 inputs=[ 8 inputs = [
9 attr[Vec3f]("position"), 9 attr[Vec3f]("position"),
10 attr[Vec4f]("color"), 10 attr[Vec4f]("color"),
11 ], 11 ],
12 intermediates=[attr[Vec4f]("outcolor")], 12 intermediates = [attr[Vec4f]("outcolor")],
13 outputs=[attr[Vec4f]("color")], 13 outputs = [attr[Vec4f]("color")],
14 vertexCode="gl_Position = vec4(position, 1.0); outcolor = color;", 14 vertexCode = "gl_Position = vec4(position, 1.0); outcolor = color;",
15 fragmentCode="color = outcolor;", 15 fragmentCode = "color = outcolor;",
16 ) 16 )
17 17
18 # scene setup 18 # scene setup
19 var 19 var
20 triangle = Scene(name: "scene", 20 scene = Scene(name: "scene",
21 meshes: @[newMesh( 21 meshes: @[newMesh(
22 [newVec3f(-0.5, 0.5), newVec3f(0, -0.5), newVec3f(0.5, 0.5)], 22 positions = [newVec3f(-0.5, 0.5), newVec3f(0, -0.5), newVec3f(0.5, 0.5)],
23 [newVec4f(1, 0, 0, 1), newVec4f(0, 1, 0, 1), newVec4f(0, 0, 1, 1)], 23 colors = [newVec4f(1, 0, 0, 1), newVec4f(0, 1, 0, 1), newVec4f(0, 0, 1, 1)],
24 material=Material(name: "default") 24 material = VERTEX_COLORED_MATERIAL.initMaterialData()
25 )] 25 )]
26 ) 26 )
27 myengine = initEngine("Hello triangle") 27 myengine = initEngine("Hello triangle", showFps = true)
28 28
29 myengine.initRenderer({"default": shaderConfiguration}.toTable) 29 myengine.initRenderer({VERTEX_COLORED_MATERIAL: shaderConfiguration}, vSync = false, inFlightFrames = 1)
30 myengine.addScene(triangle) 30 myengine.loadScene(scene)
31 31
32 while myengine.updateInputs() == Running and not myengine.keyWasPressed(Escape): 32 while myengine.updateInputs() == Running and not myengine.keyWasPressed(Escape):
33 myengine.renderScene(triangle) 33 echo ""
34 transform[Vec3f](scene.meshes[0][], "position", scale(1.001, 1.001))
35 myengine.renderScene(scene)
34 36
35 myengine.destroy() 37 myengine.destroy()