Mercurial > games > semicongine
comparison examples/E02_squares.nim @ 777:754835bf175e
add: changing rendering system, not finished yet, also upgrading to Nim 2
| author | Sam <sam@basx.dev> |
|---|---|
| date | Mon, 07 Aug 2023 00:23:00 +0700 |
| parents | a4c757f5d17f |
| children | 812b5e28f441 |
comparison
equal
deleted
inserted
replaced
| 776:002d9c576756 | 777:754835bf175e |
|---|---|
| 40 indices[squareIndex * 2 + 0] = [uint16(vertIndex + 0), uint16(vertIndex + 1), uint16(vertIndex + 2)] | 40 indices[squareIndex * 2 + 0] = [uint16(vertIndex + 0), uint16(vertIndex + 1), uint16(vertIndex + 2)] |
| 41 indices[squareIndex * 2 + 1] = [uint16(vertIndex + 2), uint16(vertIndex + 3), uint16(vertIndex + 0)] | 41 indices[squareIndex * 2 + 1] = [uint16(vertIndex + 2), uint16(vertIndex + 3), uint16(vertIndex + 0)] |
| 42 | 42 |
| 43 | 43 |
| 44 const | 44 const |
| 45 vertexInput = @[ | 45 inputs = @[ |
| 46 attr[Vec3f]("position"), | 46 attr[Vec3f]("position"), |
| 47 attr[Vec4f]("color", memoryPerformanceHint=PreferFastWrite), | 47 attr[Vec4f]("color", memoryPerformanceHint=PreferFastWrite), |
| 48 attr[uint32]("index"), | 48 attr[uint32]("index"), |
| 49 ] | 49 ] |
| 50 vertexOutput = @[attr[Vec4f]("outcolor")] | 50 intermediate = @[attr[Vec4f]("outcolor")] |
| 51 uniforms = @[attr[float32]("time")] | 51 uniforms = @[attr[float32]("time")] |
| 52 fragOutput = @[attr[Vec4f]("color")] | 52 outputs = @[attr[Vec4f]("color")] |
| 53 vertexCode = compileGlslShader( | 53 (vertexCode, fragmentCode) = compileVertexFragmentShaderSet( |
| 54 stage=VK_SHADER_STAGE_VERTEX_BIT, | 54 inputs=inputs, |
| 55 inputs=vertexInput, | 55 intermediate=intermediate, |
| 56 outputs=outputs, | |
| 56 uniforms=uniforms, | 57 uniforms=uniforms, |
| 57 outputs=vertexOutput, | 58 vertexCode=""" |
| 58 main=""" | |
| 59 float pos_weight = index / 100.0; // add some gamma correction? | 59 float pos_weight = index / 100.0; // add some gamma correction? |
| 60 float t = sin(Uniforms.time * 0.5) * 0.5 + 0.5; | 60 float t = sin(Uniforms.time * 0.5) * 0.5 + 0.5; |
| 61 float v = min(1, max(0, pow(pos_weight - t, 2))); | 61 float v = min(1, max(0, pow(pos_weight - t, 2))); |
| 62 v = pow(1 - v, 3000); | 62 v = pow(1 - v, 3000); |
| 63 outcolor = vec4(color.r, color.g, v * 0.5, 1); | 63 outcolor = vec4(color.r, color.g, v * 0.5, 1); |
| 64 gl_Position = vec4(position, 1.0); | 64 gl_Position = vec4(position, 1.0); |
| 65 """ | 65 """, |
| 66 ) | 66 fragmentCode="color = outcolor;", |
| 67 fragmentCode = compileGlslShader( | |
| 68 stage=VK_SHADER_STAGE_FRAGMENT_BIT, | |
| 69 inputs=vertexOutput, | |
| 70 uniforms=uniforms, | |
| 71 outputs=fragOutput, | |
| 72 main="color = outcolor;" | |
| 73 ) | 67 ) |
| 74 var squaremesh = newMesh( | 68 var squaremesh = newMesh( |
| 75 positions=vertices, | 69 positions=vertices, |
| 76 indices=indices, | 70 indices=indices, |
| 77 colors=colors, | 71 colors=colors, |
| 80 | 74 |
| 81 var myengine = initEngine("Squares") | 75 var myengine = initEngine("Squares") |
| 82 myengine.setRenderer(myengine.gpuDevice.simpleForwardRenderPass(vertexCode, fragmentCode)) | 76 myengine.setRenderer(myengine.gpuDevice.simpleForwardRenderPass(vertexCode, fragmentCode)) |
| 83 | 77 |
| 84 var scene = newScene("scene", newEntity("scene", [], newEntity("squares", {"mesh": Component(squaremesh)}))) | 78 var scene = newScene("scene", newEntity("scene", [], newEntity("squares", {"mesh": Component(squaremesh)}))) |
| 85 myengine.addScene(scene, vertexInput, @[], transformAttribute="") | 79 myengine.addScene(scene, inputs, @[], transformAttribute="") |
| 86 scene.addShaderGlobal("time", 0.0'f32) | 80 scene.addShaderGlobal("time", 0.0'f32) |
| 87 while myengine.updateInputs() == Running and not myengine.keyWasPressed(Escape): | 81 while myengine.updateInputs() == Running and not myengine.keyWasPressed(Escape): |
| 88 setShaderGlobal(scene, "time", getShaderGlobal[float32](scene, "time") + 0.0005'f) | 82 setShaderGlobal(scene, "time", getShaderGlobal[float32](scene, "time") + 0.0005'f) |
| 89 myengine.renderScene(scene) | 83 myengine.renderScene(scene) |
| 90 | 84 |
