comparison examples/E03_hello_cube.nim @ 671:d84b2e88776a

fix: always use rgba
author Sam <sam@basx.dev>
date Tue, 09 May 2023 18:19:17 +0700
parents e85f54b88afb
children 5f7ec8d1bd33
comparison
equal deleted inserted replaced
670:881a5c9ea50f 671:d84b2e88776a
28 TopLeftBack, TopLeftFront, BottomLeftFront, BottomLeftBack, # left 28 TopLeftBack, TopLeftFront, BottomLeftFront, BottomLeftBack, # left
29 TopRightBack, TopRightFront, BottomRightFront, BottomRightBack, # right 29 TopRightBack, TopRightFront, BottomRightFront, BottomRightBack, # right
30 TopLeftBack, TopRightBack, TopRightFront, TopLeftFront, # top 30 TopLeftBack, TopRightBack, TopRightFront, TopLeftFront, # top
31 BottomLeftFront, BottomRightFront, BottomRightBack, BottomLeftBack, # bottom 31 BottomLeftFront, BottomRightFront, BottomRightBack, BottomLeftBack, # bottom
32 ] 32 ]
33 R = newVec4f(1, 0, 0, 1)
34 G = newVec4f(0, 1, 0, 1)
35 B = newVec4f(0, 0, 1, 1)
33 cube_color = @[ 36 cube_color = @[
34 Rf32, Rf32, Rf32, Rf32, 37 R, R, R, R,
35 Rf32 * 0.5'f32, Rf32 * 0.5'f32, Rf32 * 0.5'f32, Rf32 * 0.5'f32, 38 R * 0.5'f32, R * 0.5'f32, R * 0.5'f32, R * 0.5'f32,
36 Gf32, Gf32, Gf32, Gf32, 39 G, G, G, G,
37 Gf32 * 0.5'f32, Gf32 * 0.5'f32, Gf32 * 0.5'f32, Gf32 * 0.5'f32, 40 G * 0.5'f32, G * 0.5'f32, G * 0.5'f32, G * 0.5'f32,
38 Bf32, Bf32, Bf32, Bf32, 41 B, B, B, B,
39 Bf32 * 0.5'f32, Bf32 * 0.5'f32, Bf32 * 0.5'f32, Bf32 * 0.5'f32, 42 B * 0.5'f32, B * 0.5'f32, B * 0.5'f32, B * 0.5'f32,
40 ] 43 ]
41 var 44 var
42 tris: seq[array[3, uint16]] 45 tris: seq[array[3, uint16]]
43 for i in 0'u16 ..< 6'u16: 46 for i in 0'u16 ..< 6'u16:
44 let off = i * 4 47 let off = i * 4
49 var myengine = initEngine("Hello cube") 52 var myengine = initEngine("Hello cube")
50 53
51 const 54 const
52 vertexInput = @[ 55 vertexInput = @[
53 attr[Vec3f]("position"), 56 attr[Vec3f]("position"),
54 attr[Vec3f]("color", memoryPerformanceHint=PreferFastWrite), 57 attr[Vec4f]("color", memoryPerformanceHint=PreferFastWrite),
55 ] 58 ]
56 vertexOutput = @[attr[Vec3f]("outcolor")] 59 vertexOutput = @[attr[Vec4f]("outcolor")]
57 uniforms = @[ 60 uniforms = @[
58 attr[Mat4]("projection"), 61 attr[Mat4]("projection"),
59 attr[Mat4]("view"), 62 attr[Mat4]("view"),
60 attr[Mat4]("model"), 63 attr[Mat4]("model"),
61 ] 64 ]
70 fragmentCode = compileGlslShader( 73 fragmentCode = compileGlslShader(
71 stage=VK_SHADER_STAGE_FRAGMENT_BIT, 74 stage=VK_SHADER_STAGE_FRAGMENT_BIT,
72 inputs=vertexOutput, 75 inputs=vertexOutput,
73 uniforms=uniforms, 76 uniforms=uniforms,
74 outputs=fragOutput, 77 outputs=fragOutput,
75 main="color = vec4(outcolor, 1);" 78 main="color = outcolor;"
76 ) 79 )
77 myengine.setRenderer(myengine.gpuDevice.simpleForwardRenderPass(vertexCode, fragmentCode)) 80 myengine.setRenderer(myengine.gpuDevice.simpleForwardRenderPass(vertexCode, fragmentCode))
78 var cube = newScene("scene", newEntity("cube", newMesh(positions=cube_pos, indices=tris, colors=cube_color))) 81 var cube = newScene("scene", newEntity("cube", newMesh(positions=cube_pos, indices=tris, colors=cube_color)))
79 cube.addShaderGlobal("projection", Unit4f32) 82 cube.addShaderGlobal("projection", Unit4f32)
80 cube.addShaderGlobal("view", Unit4f32) 83 cube.addShaderGlobal("view", Unit4f32)