comparison src/zamikongine/math/matrix.nim @ 24:71bbe11d8de8

did: change shader compilation to run during program compilation, maybe add dynamic version later
author Sam <sam@basx.dev>
date Wed, 11 Jan 2023 11:15:02 +0700
parents b45a5d338cd0
children c3c963e7c1a6
comparison
equal deleted inserted replaced
23:0ffdf1f4ecf4 24:71bbe11d8de8
29 Mat44*[T: SomeNumber] = object 29 Mat44*[T: SomeNumber] = object
30 data: array[16, T] 30 data: array[16, T]
31 MatMM* = Mat22|Mat33|Mat44 31 MatMM* = Mat22|Mat33|Mat44
32 MatMN* = Mat23|Mat32|Mat34|Mat43 32 MatMN* = Mat23|Mat32|Mat34|Mat43
33 Mat* = MatMM|MatMN 33 Mat* = MatMM|MatMN
34 IntegerMat = Mat22[SomeInteger]|Mat33[SomeInteger]|Mat44[SomeInteger]|Mat23[SomeInteger]|Mat32[SomeInteger]|Mat34[SomeInteger]|Mat43[SomeInteger]
35 FloatMat = Mat22[SomeFloat]|Mat33[SomeFloat]|Mat44[SomeFloat]|Mat23[SomeFloat]|Mat32[SomeFloat]|Mat34[SomeFloat]|Mat43[SomeFloat]
36 34
37 func unit22[T: SomeNumber](): auto {.compiletime.} = Mat22[T](data:[ 35 func unit22[T: SomeNumber](): auto {.compiletime.} = Mat22[T](data:[
38 T(1), T(0), 36 T(1), T(0),
39 T(0), T(1), 37 T(0), T(1),
40 ]) 38 ])
202 newEmptyNode(), 200 newEmptyNode(),
203 newEmptyNode(), 201 newEmptyNode(),
204 resultVec 202 resultVec
205 ) 203 )
206 204
207 proc createVecMatMultiplicationOperator1(vecType: typedesc, matType: typedesc): NimNode =
208 var data = nnkBracket.newTree()
209 for i in 0 ..< matType.columnCount:
210 data.add(newCall(
211 ident("sum"),
212 infix(
213 ident("v"),
214 "*",
215 newCall(newDotExpr(ident("m"), ident("col")), newLit(i))
216 )
217 ))
218 let resultVec = nnkObjConstr.newTree(
219 nnkBracketExpr.newTree(ident(vecType.name), ident("float")),
220 nnkExprColonExpr.newTree(ident("data"), data)
221 )
222
223 return nnkFuncDef.newTree(
224 ident("test"),
225 newEmptyNode(),
226 newEmptyNode(),
227 newEmptyNode(),
228 newEmptyNode(),
229 newEmptyNode(),
230 resultVec,
231 )
232 205
233 proc createMatScalarOperator(matType: typedesc, op: string): NimNode = 206 proc createMatScalarOperator(matType: typedesc, op: string): NimNode =
234 result = newStmtList() 207 result = newStmtList()
235 208
236 var data = nnkBracket.newTree() 209 var data = nnkBracket.newTree()