comparison tests/test_mesh.nim @ 1139:114f395b9144

did: finish refactoring and updated all tests accordingly
author sam <sam@basx.dev>
date Sat, 08 Jun 2024 14:58:25 +0700
parents 02e1d2658ff5
children
comparison
equal deleted inserted replaced
1138:02e1d2658ff5 1139:114f395b9144
11 attributes: {"baseTexture": TextureType, "color": Vec4F32}.toTable 11 attributes: {"baseTexture": TextureType, "color": Vec4F32}.toTable
12 ) 12 )
13 13
14 proc main() = 14 proc main() =
15 var scenes = [ 15 var scenes = [
16 Scene(name: "Donut", meshes: loadMeshes("donut.glb", MeshMaterial)[0].toSeq), 16 Scene(name: "Donut", meshes: LoadMeshes("donut.glb", MeshMaterial)[0].toSeq),
17 ] 17 ]
18 18
19 var engine = InitEngine("Test meshes") 19 var engine = InitEngine("Test meshes")
20 const 20 const
21 shaderConfiguration = createShaderConfiguration( 21 shaderConfiguration = CreateShaderConfiguration(
22 name = "default shader", 22 name = "default shader",
23 inputs = [ 23 inputs = [
24 Attr[Vec3f]("position", memoryPerformanceHint = PreferFastRead), 24 Attr[Vec3f]("position", memoryPerformanceHint = PreferFastRead),
25 Attr[uint16](MATERIALINDEX_ATTRIBUTE, memoryPerformanceHint = PreferFastRead, perInstance = true), 25 Attr[uint16](MATERIALINDEX_ATTRIBUTE, memoryPerformanceHint = PreferFastRead, perInstance = true),
26 Attr[Vec2f]("texcoord_0", memoryPerformanceHint = PreferFastRead), 26 Attr[Vec2f]("texcoord_0", memoryPerformanceHint = PreferFastRead),
47 fragmentCode = "color = texture(baseTexture[materialIndexOut], colorTexCoord) * vertexColor;" 47 fragmentCode = "color = texture(baseTexture[materialIndexOut], colorTexCoord) * vertexColor;"
48 ) 48 )
49 engine.InitRenderer({MeshMaterial: shaderConfiguration}) 49 engine.InitRenderer({MeshMaterial: shaderConfiguration})
50 50
51 for scene in scenes.mitems: 51 for scene in scenes.mitems:
52 scene.addShaderGlobal("projection", Unit4F32) 52 scene.AddShaderGlobal("projection", Unit4F32)
53 scene.addShaderGlobal("view", Unit4F32) 53 scene.AddShaderGlobal("view", Unit4F32)
54 engine.LoadScene(scene) 54 engine.LoadScene(scene)
55 55
56 var 56 var
57 size = 1'f32 57 size = 1'f32
58 elevation = 0'f32 58 elevation = 0'f32
76 if KeyWasPressed(NumberRowExtra3): 76 if KeyWasPressed(NumberRowExtra3):
77 size = 0.3'f32 77 size = 0.3'f32
78 elevation = 0'f32 78 elevation = 0'f32
79 azimut = 0'f32 79 azimut = 0'f32
80 80
81 let ratio = engine.GetWindow().size[0] / engine.GetWindow().size[1] 81 let ratio = engine.GetWindow().Size[0] / engine.GetWindow().Size[1]
82 size *= 1'f32 + MouseWheel() * 0.05 82 size *= 1'f32 + MouseWheel() * 0.05
83 azimut += MouseMove().x / 180'f32 83 azimut += MouseMove().x / 180'f32
84 elevation -= MouseMove().y / 180'f32 84 elevation -= MouseMove().y / 180'f32
85 scenes[currentScene].setShaderGlobal("projection", Perspective(PI / 2, ratio, -0.5, 1)) 85 scenes[currentScene].SetShaderGlobal("projection", Perspective(PI / 2, ratio, -0.5, 1))
86 scenes[currentScene].setShaderGlobal( 86 scenes[currentScene].SetShaderGlobal(
87 "view", 87 "view",
88 Scale(size, size, size) * Rotate(elevation, NewVec3f(1, 0, 0)) * Rotate(azimut, Yf32) 88 Scale(size, size, size) * Rotate(elevation, NewVec3f(1, 0, 0)) * Rotate(azimut, Yf32)
89 ) 89 )
90 engine.RenderScene(scenes[currentScene]) 90 engine.RenderScene(scenes[currentScene])
91 engine.Destroy() 91 engine.Destroy()