changeset 207:81fab407a479

add: some adjustment to the last refactoring :P
author Sam <sam@basx.dev>
date Tue, 09 May 2023 01:18:01 +0700
parents 7f921d7d0a2b
children 47acf82a438d
files config.nims src/semicongine/core.nim src/semicongine/core/utils.nim src/semicongine/vulkan/commandbuffer.nim src/semicongine/vulkan/descriptor.nim src/semicongine/vulkan/device.nim src/semicongine/vulkan/drawable.nim src/semicongine/vulkan/framebuffer.nim src/semicongine/vulkan/instance.nim src/semicongine/vulkan/physicaldevice.nim src/semicongine/vulkan/pipeline.nim src/semicongine/vulkan/renderpass.nim src/semicongine/vulkan/shader.nim src/semicongine/vulkan/swapchain.nim src/semicongine/vulkan/utils.nim tests/test_resources.nim
diffstat 16 files changed, 59 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/config.nims	Tue May 09 01:11:51 2023 +0700
+++ b/config.nims	Tue May 09 01:18:01 2023 +0700
@@ -139,7 +139,8 @@
 task generate_vulkan_api, "Generate Vulkan API":
   selfExec &"c -d:ssl --run src/vulkan_api/vulkan_api_generator.nim"
   mkDir "src/semicongine/vulkan/"
-  cpFile "src/vulkan_api/output/api.nim", "src/semicongine/vulkan/api.nim"
+  mkDir "src/semicongine/core/"
+  cpFile "src/vulkan_api/output/api.nim", "src/semicongine/core/api.nim"
   cpDir "src/vulkan_api/output/platform", "src/semicongine/vulkan/platform"
 
 if getCommand() in ["c", "compile", "r", "dump", "check", "idetools"]:
--- a/src/semicongine/core.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/core.nim	Tue May 09 01:18:01 2023 +0700
@@ -8,6 +8,7 @@
 import ./core/gpu_data
 import ./core/matrix
 import ./core/vector
+import ./core/utils
 
 export vulkanapi
 export audiotypes
@@ -16,3 +17,4 @@
 export gpu_data
 export matrix
 export vector
+export utils
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/semicongine/core/utils.nim	Tue May 09 01:18:01 2023 +0700
@@ -0,0 +1,23 @@
+import std/typetraits
+import std/strutils
+import std/strformat
+
+func cleanString*(str: openArray[char]): string =
+  for i in 0 ..< len(str):
+    if str[i] == char(0):
+      result = join(str[0 ..< i])
+      break
+
+func toCPointer*[T](list: var seq[T]): ptr T =
+  if list.len > 0: addr list[0] else: nil
+
+proc staticExecChecked*(command: string, input = ""): string {.compileTime.} =
+  let (output, exitcode) = gorgeEx(
+      command = command,
+      input = input)
+  if exitcode != 0:
+    raise newException(Exception, &"Running '{command}' produced exit code: {exitcode}" & output)
+  return output
+
+func size*[T: seq](list: T): uint64 =
+  uint64(list.len * sizeof(get(genericParams(typeof(list)), 0)))
--- a/src/semicongine/vulkan/commandbuffer.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/commandbuffer.nim	Tue May 09 01:18:01 2023 +0700
@@ -1,7 +1,6 @@
 import ../core
 import ./device
 import ./physicaldevice
-import ./utils
 
 type
   CommandBufferPool* = object
--- a/src/semicongine/vulkan/descriptor.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/descriptor.nim	Tue May 09 01:18:01 2023 +0700
@@ -4,7 +4,6 @@
 import ../core
 import ./device
 import ./buffer
-import ./utils
 import ./image
 
 type
--- a/src/semicongine/vulkan/device.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/device.nim	Tue May 09 01:18:01 2023 +0700
@@ -3,7 +3,6 @@
 import std/tables
 
 import ../core
-import ./utils
 import ./instance
 import ./physicaldevice
 
--- a/src/semicongine/vulkan/drawable.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/drawable.nim	Tue May 09 01:18:01 2023 +0700
@@ -3,7 +3,6 @@
 import std/logging
 
 import ../core
-import ./utils
 import ./buffer
 
 type
--- a/src/semicongine/vulkan/framebuffer.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/framebuffer.nim	Tue May 09 01:18:01 2023 +0700
@@ -1,6 +1,5 @@
 import ../core
 import ./device
-import ./utils
 import ./image
 
 
--- a/src/semicongine/vulkan/instance.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/instance.nim	Tue May 09 01:18:01 2023 +0700
@@ -4,7 +4,6 @@
 import std/logging
 
 import ../core
-import ./utils
 
 import ../platform/vulkanExtensions
 import ../platform/window
--- a/src/semicongine/vulkan/physicaldevice.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/physicaldevice.nim	Tue May 09 01:18:01 2023 +0700
@@ -3,7 +3,6 @@
 import std/sequtils
 
 import ../core
-import ./utils
 import ./instance
 
 type
--- a/src/semicongine/vulkan/pipeline.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/pipeline.nim	Tue May 09 01:18:01 2023 +0700
@@ -7,7 +7,6 @@
 import ./descriptor
 import ./shader
 import ./buffer
-import ./utils
 import ./image
 
 type
--- a/src/semicongine/vulkan/renderpass.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/renderpass.nim	Tue May 09 01:18:01 2023 +0700
@@ -2,7 +2,6 @@
 import std/logging
 
 import ../core
-import ./utils
 import ./device
 import ./physicaldevice
 import ./pipeline
--- a/src/semicongine/vulkan/shader.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/shader.nim	Tue May 09 01:18:01 2023 +0700
@@ -9,7 +9,6 @@
 
 import ../core
 import ./device
-import ./utils
 
 const DEFAULT_SHADER_VERSION = 450
 const DEFAULT_SHADER_ENTRYPOINT = "main"
--- a/src/semicongine/vulkan/swapchain.nim	Tue May 09 01:11:51 2023 +0700
+++ b/src/semicongine/vulkan/swapchain.nim	Tue May 09 01:18:01 2023 +0700
@@ -3,7 +3,6 @@
 import std/logging
 
 import ../core
-import ./utils
 import ./device
 import ./physicaldevice
 import ./image
--- a/src/semicongine/vulkan/utils.nim	Tue May 09 01:11:51 2023 +0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-import std/typetraits
-import std/strutils
-import std/strformat
-
-func cleanString*(str: openArray[char]): string =
-  for i in 0 ..< len(str):
-    if str[i] == char(0):
-      result = join(str[0 ..< i])
-      break
-
-func toCPointer*[T](list: var seq[T]): ptr T =
-  if list.len > 0: addr list[0] else: nil
-
-proc staticExecChecked*(command: string, input = ""): string {.compileTime.} =
-  let (output, exitcode) = gorgeEx(
-      command = command,
-      input = input)
-  if exitcode != 0:
-    raise newException(Exception, &"Running '{command}' produced exit code: {exitcode}" & output)
-  return output
-
-func size*[T: seq](list: T): uint64 =
-  uint64(list.len * sizeof(get(genericParams(typeof(list)), 0)))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_resources.nim	Tue May 09 01:18:01 2023 +0700
@@ -0,0 +1,32 @@
+import std/times
+
+import semicongine
+
+proc main() =
+  var scene = newScene("main", root=newEntity("rect", rect()))
+  var engine = initEngine("Test materials")
+  const
+    vertexInput = @[
+      attr[Vec3f]("position", memoryPerformanceHint=PreferFastRead),
+    ]
+    fragOutput = @[attr[Vec4f]("color")]
+    vertexCode = compileGlslShader(
+      stage=VK_SHADER_STAGE_VERTEX_BIT,
+      inputs=vertexInput,
+      main="""gl_Position = vec4(position, 1.0);"""
+    )
+    fragmentCode = compileGlslShader(
+      stage=VK_SHADER_STAGE_FRAGMENT_BIT,
+      outputs=fragOutput,
+      main="""color = vec4(1, 0, 0, 1);"""
+    )
+  engine.setRenderer(engine.gpuDevice.simpleForwardRenderPass(vertexCode, fragmentCode))
+  engine.addScene(scene, vertexInput)
+  var t = cpuTime()
+  while engine.updateInputs() == Running and not engine.keyIsDown(Escape):
+    engine.renderScene(scene)
+  engine.destroy()
+
+
+when isMainModule:
+  main()