view src/semicongine/glsl_helpers.nim @ 58:8287a91e5d56

did: refactor Matrix names
author Sam <sam@basx.dev>
date Fri, 20 Jan 2023 16:36:52 +0700
parents 547f3a374271
children
line wrap: on
line source

import ./math/vector
import ./math/matrix

func getGLSLType*[T](): string =
  # todo: likely not correct as we would need to enable some 
  # extensions somewhere (Vulkan/GLSL compiler?) to have 
  # everything work as intended. Or maybe the GPU driver does
  # some automagic conversion stuf..
  when T is uint8:         "uint"
  elif T is int8:          "int"
  elif T is uint16:        "uint"
  elif T is int16:         "int"
  elif T is uint32:        "uint"
  elif T is int32:         "int"
  elif T is uint64:        "uint"
  elif T is int64:         "int"
  elif T is float32:       "float"
  elif T is float64:       "double"

  elif T is TVec2[uint8]:   "uvec2"
  elif T is TVec2[int8]:    "ivec2"
  elif T is TVec2[uint16]:  "uvec2"
  elif T is TVec2[int16]:   "ivec2"
  elif T is TVec2[uint32]:  "uvec2"
  elif T is TVec2[int32]:   "ivec2"
  elif T is TVec2[uint64]:  "uvec2"
  elif T is TVec2[int64]:   "ivec2"
  elif T is TVec2[float32]: "vec2"
  elif T is TVec2[float64]: "dvec2"

  elif T is TVec3[uint8]:   "uvec3"
  elif T is TVec3[int8]:    "ivec3"
  elif T is TVec3[uint16]:  "uvec3"
  elif T is TVec3[int16]:   "ivec3"
  elif T is TVec3[uint32]:  "uvec3"
  elif T is TVec3[int32]:   "ivec3"
  elif T is TVec3[uint64]:  "uvec3"
  elif T is TVec3[int64]:   "ivec3"
  elif T is TVec3[float32]: "vec3"
  elif T is TVec3[float64]: "dvec3"

  elif T is TVec4[uint8]:   "uvec4"
  elif T is TVec4[int8]:    "ivec4"
  elif T is TVec4[uint16]:  "uvec4"
  elif T is TVec4[int16]:   "ivec4"
  elif T is TVec4[uint32]:  "uvec4"
  elif T is TVec4[int32]:   "ivec4"
  elif T is TVec4[uint64]:  "uvec4"
  elif T is TVec4[int64]:   "ivec4"
  elif T is TVec4[float32]: "vec4"
  elif T is TVec4[float64]: "dvec4"

  elif T is TMat22[float32]: "mat2"
  elif T is TMat23[float32]: "mat32"
  elif T is TMat32[float32]: "mat23"
  elif T is TMat33[float32]: "mat3"
  elif T is TMat34[float32]: "mat43"
  elif T is TMat43[float32]: "mat34"
  elif T is TMat44[float32]: "mat4"

  elif T is TMat22[float64]: "dmat2"
  elif T is TMat23[float64]: "dmat32"
  elif T is TMat32[float64]: "dmat23"
  elif T is TMat33[float64]: "dmat3"
  elif T is TMat34[float64]: "dmat43"
  elif T is TMat43[float64]: "dmat34"
  elif T is TMat44[float64]: "dmat4"