Mercurial > games > semicongine
comparison examples/E10_pong.nim @ 538:c1f16a095637
add: color functions + gamma correction
| author | Sam <sam@basx.dev> |
|---|---|
| date | Tue, 07 Feb 2023 12:20:04 +0700 |
| parents | 21c276c0a968 |
| children | 8bfcaed87cd6 |
comparison
equal
deleted
inserted
replaced
| 537:f5af3c5421c5 | 538:c1f16a095637 |
|---|---|
| 7 transform: ModelTransformAttribute | 7 transform: ModelTransformAttribute |
| 8 Uniforms = object | 8 Uniforms = object |
| 9 view: ViewProjectionTransform | 9 view: ViewProjectionTransform |
| 10 | 10 |
| 11 const | 11 const |
| 12 barcolor = Vec3([1'f, 0'f, 0'f]) | 12 barcolor = RGBfromHex("5A3F00").gamma(2.2) |
| 13 barSize = 0.1'f | 13 barSize = 0.1'f |
| 14 barWidth = 0.01'f | 14 barWidth = 0.01'f |
| 15 ballcolor = Vec3([0'f, 0'f, 0'f]) | 15 ballcolor = RGBfromHex("B17F08").gamma(2.2) |
| 16 levelRatio = 1 | 16 levelRatio = 1 |
| 17 ballSize = 0.01'f | 17 ballSize = 0.01'f |
| 18 backgroundColor = RGBAfromHex("FAC034").gamma(2.2) | |
| 19 ballSpeed = 60'f | |
| 18 | 20 |
| 19 var | 21 var |
| 20 uniforms = Uniforms() | 22 uniforms = Uniforms() |
| 21 pipeline: RenderPipeline[Vertex, Uniforms] | 23 pipeline: RenderPipeline[Vertex, Uniforms] |
| 22 level: Thing | 24 level: Thing |
| 23 ballVelocity = Vec2([1'f, 1'f]).normalized * 30'f | 25 ballVelocity = Vec2([1'f, 1'f]).normalized * ballSpeed |
| 24 | 26 |
| 25 proc globalUpdate(engine: var Engine; t, dt: float32) = | 27 proc globalUpdate(engine: var Engine; t, dt: float32) = |
| 26 var height = float32(engine.vulkan.frameSize.y) / float32( | 28 var height = float32(engine.vulkan.frameSize.y) / float32( |
| 27 engine.vulkan.frameSize.x) | 29 engine.vulkan.frameSize.x) |
| 28 var width = 1'f | 30 var width = 1'f |
| 42 ball.transform = ball.transform * translate3d(ballVelocity[0] * dt, | 44 ball.transform = ball.transform * translate3d(ballVelocity[0] * dt, |
| 43 ballVelocity[1] * dt, 0'f) | 45 ballVelocity[1] * dt, 0'f) |
| 44 | 46 |
| 45 # loose | 47 # loose |
| 46 if ball.transform.col(3).x - ballSize/2 <= 0: | 48 if ball.transform.col(3).x - ballSize/2 <= 0: |
| 47 ballVelocity = Vec2([1'f, 1'f]).normalized * 30'f | 49 ballVelocity = Vec2([1'f, 1'f]).normalized * ballSpeed |
| 48 ball.transform[0, 3] = 0.5 | 50 ball.transform[0, 3] = width / 2 |
| 49 ball.transform[1, 3] = 0.5 | 51 ball.transform[1, 3] = height / 2 |
| 50 | 52 |
| 51 # bounce level | 53 # bounce level |
| 52 if ball.transform.col(3).x + ballSize/2 > width: ballVelocity[ | 54 if ball.transform.col(3).x + ballSize/2 > width: ballVelocity[ |
| 53 0] = -ballVelocity[0] | 55 0] = -ballVelocity[0] |
| 54 if ball.transform.col(3).y - ballSize/2 <= 0: ballVelocity[1] = -ballVelocity[1] | 56 if ball.transform.col(3).y - ballSize/2 <= 0: ballVelocity[1] = -ballVelocity[1] |
| 66 ballVelocity[0] = abs(ballVelocity[0]) | 68 ballVelocity[0] = abs(ballVelocity[0]) |
| 67 | 69 |
| 68 | 70 |
| 69 when isMainModule: | 71 when isMainModule: |
| 70 var myengine = igniteEngine("Pong") | 72 var myengine = igniteEngine("Pong") |
| 71 myengine.fps = 60 | 73 myengine.maxFPS = 61 |
| 72 level = newThing("Level") | 74 level = newThing("Level") |
| 73 var playerbarmesh = quad[Vertex, Vec2, float32]() | 75 var playerbarmesh = quad[Vertex, Vec2, float32]() |
| 74 playerbarmesh.vertexData.color.data = @[barcolor, barcolor, barcolor, barcolor] | 76 playerbarmesh.vertexData.color.data = @[barcolor, barcolor, barcolor, barcolor] |
| 75 playerbarmesh.vertexData.transform.data = @[Unit44] | 77 playerbarmesh.vertexData.transform.data = @[Unit44] |
| 76 var playerbar = newThing("playerbar", playerbarmesh) | 78 var playerbar = newThing("playerbar", playerbarmesh) |
| 97 myengine, | 99 myengine, |
| 98 level, | 100 level, |
| 99 vertexShader, | 101 vertexShader, |
| 100 fragmentShader | 102 fragmentShader |
| 101 ) | 103 ) |
| 102 pipeline.clearColor = Vec4([1.0'f, 1.0'f, 1.0'f, 1.0'f]) | 104 pipeline.clearColor = backgroundColor |
| 103 # show something | 105 # show something |
| 104 myengine.run(pipeline, globalUpdate) | 106 myengine.run(pipeline, globalUpdate) |
| 105 pipeline.trash() | 107 pipeline.trash() |
| 106 myengine.trash() | 108 myengine.trash() |
