Mercurial > games > semicongine
changeset 804:de1e4d0ee527
fix: error with textures as shader-globales
author | Sam <sam@basx.dev> |
---|---|
date | Mon, 11 Sep 2023 21:30:58 +0700 |
parents | 086bafa7f0d7 |
children | 7a13941ba204 |
files | src/semicongine/core/gpu_data.nim src/semicongine/scene.nim |
diffstat | 2 files changed, 4 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/semicongine/core/gpu_data.nim Mon Sep 11 18:23:15 2023 +0700 +++ b/src/semicongine/core/gpu_data.nim Mon Sep 11 21:30:58 2023 +0700 @@ -408,7 +408,7 @@ else: {.error: "Virtual datatype has no value" .} proc setValues*[T: GPUType|int|uint|float](value: var DataList, data: seq[T]) = - value.len = data.len + value.initData(data.len) when T is float32: value.float32[] = data elif T is float64: value.float64[] = data elif T is int8: value.int8[] = data @@ -505,7 +505,7 @@ of Mat43F64: result.mat43f64 = new seq[TMat43[float64]] of Mat4F32: result.mat4f32 = new seq[TMat4[float32]] of Mat4F64: result.mat4f64 = new seq[TMat4[float64]] - of Sampler2D: discard + of Sampler2D: result.texture = new seq[Texture] proc newDataList*[T: GPUType](len=0): DataList = result = newDataList(getDataType[T]()) @@ -514,7 +514,7 @@ proc newDataList*[T: GPUType](data: seq[T]): DataList = result = newDataList(getDataType[T]()) - setValues[T](result, data) + result.setValues(data) proc toGPUValue*[T: GPUType](value: T): DataValue = result = DataValue(theType: getDataType[T]())
--- a/src/semicongine/scene.nim Mon Sep 11 18:23:15 2023 +0700 +++ b/src/semicongine/scene.nim Mon Sep 11 21:30:58 2023 +0700 @@ -29,8 +29,7 @@ scene.dirtyShaderGlobals.add name proc addShaderGlobalArray*[T](scene: var Scene, name: string, data: seq[T]) = - scene.shaderGlobals[name] = newDataList(thetype=getDataType[T]()) - setValues(scene.shaderGlobals[name], data) + scene.shaderGlobals[name] = newDataList(data) scene.dirtyShaderGlobals.add name func getShaderGlobal*[T](scene: Scene, name: string): T =