comparison examples/squares.nim @ 59:d7d9420ba675

did: use new vector and matrix names for simpler code
author Sam <sam@basx.dev>
date Fri, 20 Jan 2023 16:53:37 +0700
parents 547f3a374271
children c57285d292b6
comparison
equal deleted inserted replaced
58:8287a91e5d56 59:d7d9420ba675
6 6
7 import semicongine 7 import semicongine
8 8
9 type 9 type
10 VertexDataA = object 10 VertexDataA = object
11 position11: PositionAttribute[TVec2[float32]] 11 position11: PositionAttribute[Vec2]
12 color22: ColorAttribute[TVec3[float32]] 12 color22: ColorAttribute[Vec3]
13 index: GenericAttribute[uint32] 13 index: GenericAttribute[uint32]
14 Uniforms = object 14 Uniforms = object
15 t: Descriptor[float32] 15 t: Descriptor[float32]
16 16
17 var 17 var
30 COLUMNS = 10 30 COLUMNS = 10
31 ROWS = 10 31 ROWS = 10
32 WIDTH = 2'f32 / COLUMNS 32 WIDTH = 2'f32 / COLUMNS
33 HEIGHT = 2'f32 / ROWS 33 HEIGHT = 2'f32 / ROWS
34 var 34 var
35 vertices: array[COLUMNS * ROWS * 4, TVec2[float32]] 35 vertices: array[COLUMNS * ROWS * 4, Vec2]
36 colors: array[COLUMNS * ROWS * 4, TVec3[float32]] 36 colors: array[COLUMNS * ROWS * 4, Vec3]
37 iValues: array[COLUMNS * ROWS * 4, uint32] 37 iValues: array[COLUMNS * ROWS * 4, uint32]
38 indices: array[COLUMNS * ROWS * 2, array[3, uint16]] 38 indices: array[COLUMNS * ROWS * 2, array[3, uint16]]
39 39
40 for row in 0 ..< ROWS: 40 for row in 0 ..< ROWS:
41 for col in 0 ..< COLUMNS: 41 for col in 0 ..< COLUMNS:
42 let 42 let
43 y: float32 = (row * 2 / COLUMNS) - 1 43 y: float32 = (row * 2 / COLUMNS) - 1
44 x: float32 = (col * 2 / ROWS) - 1 44 x: float32 = (col * 2 / ROWS) - 1
45 color = TVec3[float32]([(x + 1) / 2, (y + 1) / 2, 0'f32]) 45 color = Vec3([(x + 1) / 2, (y + 1) / 2, 0'f32])
46 squareIndex = row * COLUMNS + col 46 squareIndex = row * COLUMNS + col
47 vertIndex = squareIndex * 4 47 vertIndex = squareIndex * 4
48 vertices[vertIndex + 0] = TVec2[float32]([x, y]) 48 vertices[vertIndex + 0] = Vec2([x, y])
49 vertices[vertIndex + 1] = TVec2[float32]([x + WIDTH, y]) 49 vertices[vertIndex + 1] = Vec2([x + WIDTH, y])
50 vertices[vertIndex + 2] = TVec2[float32]([x + WIDTH, y + HEIGHT]) 50 vertices[vertIndex + 2] = Vec2([x + WIDTH, y + HEIGHT])
51 vertices[vertIndex + 3] = TVec2[float32]([x, y + HEIGHT]) 51 vertices[vertIndex + 3] = Vec2([x, y + HEIGHT])
52 colors[vertIndex + 0] = color 52 colors[vertIndex + 0] = color
53 colors[vertIndex + 1] = color 53 colors[vertIndex + 1] = color
54 colors[vertIndex + 2] = color 54 colors[vertIndex + 2] = color
55 colors[vertIndex + 3] = color 55 colors[vertIndex + 3] = color
56 iValues[vertIndex + 0] = uint32(squareIndex) 56 iValues[vertIndex + 0] = uint32(squareIndex)
62 62
63 63
64 type PIndexedMesh = ref IndexedMesh[VertexDataA, uint16] # required so we can use ctor with ref/on heap 64 type PIndexedMesh = ref IndexedMesh[VertexDataA, uint16] # required so we can use ctor with ref/on heap
65 var squaremesh = PIndexedMesh( 65 var squaremesh = PIndexedMesh(
66 vertexData: VertexDataA( 66 vertexData: VertexDataA(
67 position11: PositionAttribute[TVec2[float32]](data: @vertices), 67 position11: PositionAttribute[Vec2](data: @vertices),
68 color22: ColorAttribute[TVec3[float32]](data: @colors), 68 color22: ColorAttribute[Vec3](data: @colors),
69 index: GenericAttribute[uint32](data: @iValues), 69 index: GenericAttribute[uint32](data: @iValues),
70 ), 70 ),
71 indices: @indices 71 indices: @indices
72 ) 72 )
73 var scene = new Thing 73 var scene = new Thing