Mercurial > games > semicongine
comparison examples/E02_squares.nim @ 1027:d6c27f0ed3e4
fix: examples not compiling
author | sam <sam@basx.dev> |
---|---|
date | Wed, 22 May 2024 03:45:16 +0700 |
parents | c66503386e8b |
children | 71315636ba82 |
comparison
equal
deleted
inserted
replaced
1026:f7802c5069ce | 1027:d6c27f0ed3e4 |
---|---|
1 import std/sequtils | 1 import std/sequtils |
2 import std/tables | 2 import std/tables |
3 import std/random | 3 import std/random |
4 | 4 |
5 import ../src/semicongine | 5 import ../semicongine |
6 | 6 |
7 | 7 |
8 when isMainModule: | 8 when isMainModule: |
9 randomize() | 9 randomize() |
10 const | 10 const |
42 indices[squareIndex * 2 + 1] = [uint16(vertIndex + 2), uint16(vertIndex + 3), uint16(vertIndex + 0)] | 42 indices[squareIndex * 2 + 1] = [uint16(vertIndex + 2), uint16(vertIndex + 3), uint16(vertIndex + 0)] |
43 | 43 |
44 | 44 |
45 const | 45 const |
46 shaderConfiguration = createShaderConfiguration( | 46 shaderConfiguration = createShaderConfiguration( |
47 inputs=[ | 47 name = "default shader", |
48 inputs = [ | |
48 attr[Vec3f]("position"), | 49 attr[Vec3f]("position"), |
49 attr[Vec4f]("color", memoryPerformanceHint=PreferFastWrite), | 50 attr[Vec4f]("color", memoryPerformanceHint = PreferFastWrite), |
50 attr[uint32]("index"), | 51 attr[uint32]("index"), |
51 ], | 52 ], |
52 intermediates=[attr[Vec4f]("outcolor")], | 53 intermediates = [attr[Vec4f]("outcolor")], |
53 uniforms=[attr[float32]("time")], | 54 uniforms = [attr[float32]("time")], |
54 outputs=[attr[Vec4f]("color")], | 55 outputs = [attr[Vec4f]("color")], |
55 vertexCode=""" | 56 vertexCode = """ |
56 float pos_weight = index / 100.0; // add some gamma correction? | 57 float pos_weight = index / 100.0; // add some gamma correction? |
57 float t = sin(Uniforms.time * 0.5) * 0.5 + 0.5; | 58 float t = sin(Uniforms.time * 0.5) * 0.5 + 0.5; |
58 float v = min(1, max(0, pow(pos_weight - t, 2))); | 59 float v = min(1, max(0, pow(pos_weight - t, 2))); |
59 v = pow(1 - v, 3000); | 60 v = pow(1 - v, 3000); |
60 outcolor = vec4(color.r, color.g, v * 0.5, 1); | 61 outcolor = vec4(color.r, color.g, v * 0.5, 1); |
61 gl_Position = vec4(position, 1.0); | 62 gl_Position = vec4(position, 1.0); |
62 """, | 63 """, |
63 fragmentCode="color = outcolor;", | 64 fragmentCode = "color = outcolor;", |
64 ) | 65 ) |
66 let matDef = MaterialType(name: "default", vertexAttributes: { | |
67 "position": Vec3F32, | |
68 "color": Vec4F32, | |
69 "index": UInt32, | |
70 }.toTable) | |
65 var squaremesh = newMesh( | 71 var squaremesh = newMesh( |
66 positions=vertices, | 72 positions = vertices, |
67 indices=indices, | 73 indices = indices, |
68 colors=colors, | 74 colors = colors, |
69 material=Material(name: "default") | |
70 ) | 75 ) |
71 squaremesh[].initVertexAttribute("index", iValues.toSeq) | 76 squaremesh[].initVertexAttribute("index", iValues.toSeq) |
77 squaremesh.material = matDef.initMaterialData(name = "default") | |
72 | 78 |
73 var myengine = initEngine("Squares") | 79 var myengine = initEngine("Squares") |
74 myengine.initRenderer({"default": shaderConfiguration}.toTable) | 80 myengine.initRenderer({matDef: shaderConfiguration}) |
75 | 81 |
76 var scene = Scene(name: "scene", meshes: @[squaremesh]) | 82 var scene = Scene(name: "scene", meshes: @[squaremesh]) |
77 scene.addShaderGlobal("time", 0.0'f32) | 83 scene.addShaderGlobal("time", 0.0'f32) |
78 myengine.addScene(scene) | 84 myengine.loadScene(scene) |
79 while myengine.updateInputs() == Running and not myengine.keyWasPressed(Escape): | 85 while myengine.UpdateInputs() and not KeyWasPressed(Escape): |
80 scene.setShaderGlobal("time", getShaderGlobal[float32](scene, "time") + 0.0005'f) | 86 scene.setShaderGlobal("time", getShaderGlobal[float32](scene, "time") + 0.0005'f) |
81 myengine.renderScene(scene) | 87 myengine.renderScene(scene) |
82 | 88 |
83 myengine.destroy() | 89 myengine.destroy() |