Mercurial > games > semicongine
comparison tests/test_vulkan_wrapper.nim @ 1128:ae54dbb08e53
merge into git mirror
| author | sam <sam@basx.dev> |
|---|---|
| date | Thu, 23 May 2024 01:44:10 +0700 |
| parents | 73b572f82a1f |
| children | 74957cbf589b |
comparison
equal
deleted
inserted
replaced
| 1127:073ce95ae5c7 | 1128:ae54dbb08e53 |
|---|---|
| 9 minification: VK_FILTER_NEAREST, | 9 minification: VK_FILTER_NEAREST, |
| 10 wrapModeS: VK_SAMPLER_ADDRESS_MODE_REPEAT, | 10 wrapModeS: VK_SAMPLER_ADDRESS_MODE_REPEAT, |
| 11 wrapModeT: VK_SAMPLER_ADDRESS_MODE_REPEAT, | 11 wrapModeT: VK_SAMPLER_ADDRESS_MODE_REPEAT, |
| 12 ) | 12 ) |
| 13 (R, W) = ([255'u8, 0'u8, 0'u8, 255'u8], [255'u8, 255'u8, 255'u8, 255'u8]) | 13 (R, W) = ([255'u8, 0'u8, 0'u8, 255'u8], [255'u8, 255'u8, 255'u8, 255'u8]) |
| 14 mat = SINGLE_TEXTURE_MATERIAL.initMaterialData( | 14 Mat1Type = MaterialType( |
| 15 name: "single texture material 1", | |
| 16 vertexAttributes: { | |
| 17 "color": Vec4F32, | |
| 18 "position": Vec3F32, | |
| 19 "uv": Vec2F32, | |
| 20 }.toTable, | |
| 21 attributes: {"baseTexture": TextureType}.toTable | |
| 22 ) | |
| 23 mat = Mat1Type.initMaterialData( | |
| 15 name = "mat", | 24 name = "mat", |
| 16 attributes = { | 25 attributes = { |
| 17 "baseTexture": initDataList(@[Texture(isGrayscale: false, colorImage: Image[RGBAPixel](width: 5, height: 5, imagedata: @[ | 26 "baseTexture": initDataList(@[Texture(isGrayscale: false, colorImage: Image[RGBAPixel](width: 5, height: 5, imagedata: @[ |
| 18 R, R, R, R, R, | 27 R, R, R, R, R, |
| 19 R, R, W, R, R, | 28 R, R, W, R, R, |
| 24 }.toTable | 33 }.toTable |
| 25 ) | 34 ) |
| 26 Mat2Type = MaterialType( | 35 Mat2Type = MaterialType( |
| 27 name: "single texture material 2", | 36 name: "single texture material 2", |
| 28 vertexAttributes: { | 37 vertexAttributes: { |
| 38 "color": Vec4F32, | |
| 29 "position": Vec3F32, | 39 "position": Vec3F32, |
| 30 "uv": Vec2F32, | 40 "uv": Vec2F32, |
| 31 }.toTable, | 41 }.toTable, |
| 32 attributes: {"baseTexture": TextureType}.toTable | 42 attributes: {"baseTexture": TextureType}.toTable |
| 33 ) | 43 ) |
| 176 var engine = initEngine("Test") | 186 var engine = initEngine("Test") |
| 177 | 187 |
| 178 # INIT RENDERER: | 188 # INIT RENDERER: |
| 179 const | 189 const |
| 180 shaderConfiguration1 = createShaderConfiguration( | 190 shaderConfiguration1 = createShaderConfiguration( |
| 191 name = "shader1", | |
| 181 inputs = [ | 192 inputs = [ |
| 182 attr[Vec3f]("position", memoryPerformanceHint = PreferFastRead), | 193 attr[Vec3f]("position", memoryPerformanceHint = PreferFastRead), |
| 183 attr[Vec4f]("color", memoryPerformanceHint = PreferFastWrite), | 194 attr[Vec4f]("color", memoryPerformanceHint = PreferFastWrite), |
| 184 attr[Mat4]("transform", perInstance = true), | 195 attr[Mat4]("transform", perInstance = true), |
| 185 ], | 196 ], |
| 186 intermediates = [ | 197 intermediates = [ |
| 187 attr[Vec4f]("outcolor"), | 198 attr[Vec4f]("outcolor"), |
| 188 ], | 199 ], |
| 189 outputs = [attr[Vec4f]("color")], | 200 outputs = [attr[Vec4f]("color")], |
| 190 samplers = [ | 201 samplers = [attr[Texture]("baseTexture")], |
| 191 attr[Texture]("baseTexture") | |
| 192 ], | |
| 193 vertexCode = """gl_Position = vec4(position, 1.0) * transform; outcolor = color;""", | 202 vertexCode = """gl_Position = vec4(position, 1.0) * transform; outcolor = color;""", |
| 194 fragmentCode = "color = texture(baseTexture, outcolor.xy) * 0.5 + outcolor * 0.5;", | 203 fragmentCode = "color = texture(baseTexture, outcolor.xy) * 0.5 + outcolor * 0.5;", |
| 195 ) | 204 ) |
| 196 shaderConfiguration2 = createShaderConfiguration( | 205 shaderConfiguration2 = createShaderConfiguration( |
| 206 name = "shader2", | |
| 197 inputs = [ | 207 inputs = [ |
| 198 attr[Vec3f]("position", memoryPerformanceHint = PreferFastRead), | 208 attr[Vec3f]("position", memoryPerformanceHint = PreferFastRead), |
| 199 attr[Mat4]("transform", perInstance = true), | 209 attr[Mat4]("transform", perInstance = true), |
| 200 ], | 210 ], |
| 201 intermediates = [attr[Vec4f]("outcolor")], | 211 intermediates = [attr[Vec4f]("outcolor")], |
| 203 uniforms = [attr[Vec4f]("color", arrayCount = 1)], | 213 uniforms = [attr[Vec4f]("color", arrayCount = 1)], |
| 204 vertexCode = """gl_Position = vec4(position, 1.0) * transform; outcolor = Uniforms.color[0];""", | 214 vertexCode = """gl_Position = vec4(position, 1.0) * transform; outcolor = Uniforms.color[0];""", |
| 205 fragmentCode = "color = outcolor;", | 215 fragmentCode = "color = outcolor;", |
| 206 ) | 216 ) |
| 207 engine.initRenderer({ | 217 engine.initRenderer({ |
| 208 SINGLE_TEXTURE_MATERIAL: shaderConfiguration1, | 218 Mat1Type: shaderConfiguration1, |
| 209 SINGLE_TEXTURE_MATERIAL: shaderConfiguration1, | 219 Mat1Type: shaderConfiguration1, |
| 210 Mat2Type: shaderConfiguration1, | 220 Mat2Type: shaderConfiguration1, |
| 211 SINGLE_COLOR_MATERIAL: shaderConfiguration2, | 221 SINGLE_COLOR_MATERIAL: shaderConfiguration2, |
| 212 }) | 222 }) |
| 213 | 223 |
| 214 # INIT SCENES | 224 # INIT SCENES |
| 227 echo "Setup successfull, start rendering" | 237 echo "Setup successfull, start rendering" |
| 228 for i in 0 ..< 3: | 238 for i in 0 ..< 3: |
| 229 for scene in scenes.mitems: | 239 for scene in scenes.mitems: |
| 230 echo "rendering scene ", scene.name | 240 echo "rendering scene ", scene.name |
| 231 for i in 0 ..< 1000: | 241 for i in 0 ..< 1000: |
| 232 if engine.updateInputs() != Running or engine.keyIsDown(Escape): | 242 if not engine.updateInputs() or keyIsDown(Escape): |
| 233 engine.destroy() | 243 engine.destroy() |
| 234 return | 244 return |
| 235 engine.renderScene(scene) | 245 engine.renderScene(scene) |
| 236 | 246 |
| 237 # cleanup | 247 # cleanup |
