annotate examples/E03_hello_cube.nim @ 253:ad078e26a1c7

fix: API changes
author sam <sam@basx.dev>
date Wed, 24 May 2023 01:31:21 +0700
parents f3912838cd69
children 95281f2db400
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
1 #
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
2 # TODO: Needs Depth-Buffer first!
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
3 #
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
4 #
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
5 #
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
6 #
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
7 #
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
8 #
60
c57285d292b6 did: deep refactoring of handling vertrex attribute and buffer updates, don't ask ;(
Sam <sam@basx.dev>
parents: 59
diff changeset
9
c57285d292b6 did: deep refactoring of handling vertrex attribute and buffer updates, don't ask ;(
Sam <sam@basx.dev>
parents: 59
diff changeset
10
38
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
11 import std/times
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
12
56
94d7eed3f118 did: cleanup main namespace, add: better coordinate handling in input example
Sam <sam@basx.dev>
parents: 40
diff changeset
13 import semicongine
38
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
14
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
15 const
141
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
16 TopLeftFront = newVec3f(-0.5'f32, -0.5'f32, -0.5'f32)
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
17 TopRightFront = newVec3f(0.5'f32, -0.5'f32, -0.5'f32)
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
18 BottomRightFront = newVec3f(0.5'f32, 0.5'f32, -0.5'f32)
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
19 BottomLeftFront = newVec3f(-0.5'f32, 0.5'f32, -0.5'f32)
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
20 TopLeftBack = newVec3f(0.5'f32, -0.5'f32, 0.5'f32)
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
21 TopRightBack = newVec3f(-0.5'f32, -0.5'f32, 0.5'f32)
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
22 BottomRightBack = newVec3f(-0.5'f32, 0.5'f32, 0.5'f32)
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
23 BottomLeftBack = newVec3f(0.5'f32, 0.5'f32, 0.5'f32)
38
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
24 const
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
25 cube_pos = @[
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
26 TopLeftFront, TopRightFront, BottomRightFront, BottomLeftFront, # front
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
27 TopLeftBack, TopRightBack, BottomRightBack, BottomLeftBack, # back
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
28 TopLeftBack, TopLeftFront, BottomLeftFront, BottomLeftBack, # left
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
29 TopRightBack, TopRightFront, BottomRightFront, BottomRightBack, # right
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
30 TopLeftBack, TopRightBack, TopRightFront, TopLeftFront, # top
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
31 BottomLeftFront, BottomRightFront, BottomRightBack, BottomLeftBack, # bottom
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
32 ]
210
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
33 R = newVec4f(1, 0, 0, 1)
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
34 G = newVec4f(0, 1, 0, 1)
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
35 B = newVec4f(0, 0, 1, 1)
38
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
36 cube_color = @[
210
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
37 R, R, R, R,
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
38 R * 0.5'f32, R * 0.5'f32, R * 0.5'f32, R * 0.5'f32,
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
39 G, G, G, G,
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
40 G * 0.5'f32, G * 0.5'f32, G * 0.5'f32, G * 0.5'f32,
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
41 B, B, B, B,
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
42 B * 0.5'f32, B * 0.5'f32, B * 0.5'f32, B * 0.5'f32,
38
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
43 ]
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
44 var
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
45 tris: seq[array[3, uint16]]
39
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
46 for i in 0'u16 ..< 6'u16:
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
47 let off = i * 4
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
48 tris.add [off + 0'u16, off + 1'u16, off + 2'u16]
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
49 tris.add [off + 2'u16, off + 3'u16, off + 0'u16]
38
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
50
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
51 when isMainModule:
141
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
52 var myengine = initEngine("Hello cube")
38
c3c963e7c1a6 did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
Sam <sam@basx.dev>
parents:
diff changeset
53
141
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
54 const
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
55 vertexInput = @[
163
25d97fa0ad5c fix: API change for shader attributes
Sam <sam@basx.dev>
parents: 145
diff changeset
56 attr[Vec3f]("position"),
210
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
57 attr[Vec4f]("color", memoryPerformanceHint=PreferFastWrite),
141
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
58 ]
210
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
59 vertexOutput = @[attr[Vec4f]("outcolor")]
141
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
60 uniforms = @[
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
61 attr[Mat4]("projection"),
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
62 attr[Mat4]("view"),
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
63 attr[Mat4]("model"),
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
64 ]
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
65 fragOutput = @[attr[Vec4f]("color")]
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
66 vertexCode = compileGlslShader(
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
67 stage=VK_SHADER_STAGE_VERTEX_BIT,
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
68 inputs=vertexInput,
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
69 uniforms=uniforms,
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
70 outputs=vertexOutput,
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
71 main="""outcolor = color; gl_Position = (Uniforms.projection * Uniforms.view * Uniforms.model) * vec4(position, 1);"""
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
72 )
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
73 fragmentCode = compileGlslShader(
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
74 stage=VK_SHADER_STAGE_FRAGMENT_BIT,
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
75 inputs=vertexOutput,
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
76 uniforms=uniforms,
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
77 outputs=fragOutput,
210
f3912838cd69 fix: always use rgba
Sam <sam@basx.dev>
parents: 204
diff changeset
78 main="color = outcolor;"
141
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
79 )
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
80 myengine.setRenderer(myengine.gpuDevice.simpleForwardRenderPass(vertexCode, fragmentCode))
203
84fd522fdf3f did: update examples to use new API for scene + scene globals
Sam <sam@basx.dev>
parents: 163
diff changeset
81 var cube = newScene("scene", newEntity("cube", newMesh(positions=cube_pos, indices=tris, colors=cube_color)))
84fd522fdf3f did: update examples to use new API for scene + scene globals
Sam <sam@basx.dev>
parents: 163
diff changeset
82 cube.addShaderGlobal("projection", Unit4f32)
84fd522fdf3f did: update examples to use new API for scene + scene globals
Sam <sam@basx.dev>
parents: 163
diff changeset
83 cube.addShaderGlobal("view", Unit4f32)
84fd522fdf3f did: update examples to use new API for scene + scene globals
Sam <sam@basx.dev>
parents: 163
diff changeset
84 cube.addShaderGlobal("model", Unit4f32)
253
ad078e26a1c7 fix: API changes
sam <sam@basx.dev>
parents: 210
diff changeset
85 myengine.addScene(cube, vertexInput, @[])
141
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
86
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
87 var t: float32 = cpuTime()
145
a4e6e76128e6 add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents: 141
diff changeset
88 while myengine.updateInputs() == Running and not myengine.keyWasPressed(Escape):
203
84fd522fdf3f did: update examples to use new API for scene + scene globals
Sam <sam@basx.dev>
parents: 163
diff changeset
89 setShaderGlobal(cube, "model", translate3d(0'f32, 0'f32, 10'f32) * rotate3d(t, Yf32))
84fd522fdf3f did: update examples to use new API for scene + scene globals
Sam <sam@basx.dev>
parents: 163
diff changeset
90 setShaderGlobal(cube, "projection",
141
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
91 perspective(
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
92 float32(PI / 4),
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
93 float32(myengine.getWindow().size[0]) / float32(myengine.getWindow().size[0]),
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
94 0.1'f32,
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
95 100'f32
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
96 )
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
97 )
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
98 t = cpuTime()
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
99
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
100 myengine.renderScene(cube)
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
101
8bb27869b649 did: migrate to new engine version
Sam <sam@basx.dev>
parents: 74
diff changeset
102 myengine.destroy()