# \[SOLVED\] Shader Material with WebGPU

**URL:** <https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060>\
**Category:** Questions\
**Tags:** webgpu, shader-material\
**Created:** [June 30, 2023, 9:38am UTC](https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060 "2023-06-30T09:38:05Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hersir](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/hersir/32/108_2.png) [@Hersir](https://forum.babylonjs.com/u/Hersir)\
**Post date:** [June 30, 2023, 9:38am UTC](https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060/1 "2023-06-30T09:38:05Z")

</div>

Hi,  
noticed issue with Shader Material on WebGPU renderer [PG](https://playground.babylonjs.com/#5T8G3I#23) here.

Basically setting Array2 or Array3 creates error:

```auto
uniformBuffer.ts:768 Uncaught TypeError: Cannot read properties of undefined (reading 'strideSize')
    at e.updateUniformArray (uniformBuffer.ts:768:48)
    at e._updateArrayForUniform (uniformBuffer.ts:890:14)
    at e.setArray (webgpuPipelineContext.ts:347:28)
    at e.setArray3 (webgpuPipelineContext.ts:366:14)
    at e.setArray3 (effect.ts:1304:32)
    at t.bind (shaderMaterial.ts:1127:24)
    at t.bindForSubMesh (shaderMaterial.ts:949:14)
    at t.render (mesh.ts:2047:31)
    at e.render (subMesh.ts:427:29)
    at e._RenderSorted (renderingGroup.ts:275:21)

```

any insights on this, it is correct behaviour or bug ?

thank you

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [June 30, 2023, 10:11am UTC](https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060/2 "2023-06-30T10:11:24Z")

</div>

`setArray3` should only be used to set an `array of vec3`. Your variable is a simple `vec3`, so you should use `setVector3` instead:

> **[Babylon.js Playground](https://playground.babylonjs.com/?webgpu#5T8G3I%2324)**
>
> Babylon.js playground is a live editor for Babylon.js WebGL 3D scenes

WebGL is more permissive and accepts `setArray3` to set a `vec3`, but really it should not…

---

<div class="post-metadata">

**Author:** ![Hersir](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/hersir/32/108_2.png) [@Hersir](https://forum.babylonjs.com/u/Hersir)\
**Post date:** [June 30, 2023, 10:14am UTC](https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060/3 "2023-06-30T10:14:33Z")

</div>

@Evgeni_Popov thank you but then would be nice to update typings, as right. now it allow any number array

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [June 30, 2023, 10:33am UTC](https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060/4 "2023-06-30T10:33:19Z")

</div>

What do you mean by “it allow any number array”?

---

<div class="post-metadata">

**Author:** ![Hersir](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/hersir/32/108_2.png) [@Hersir](https://forum.babylonjs.com/u/Hersir)\
**Post date:** [June 30, 2023, 10:38am UTC](https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060/5 "2023-06-30T10:38:55Z")

</div>

Typescript typings for [Babylon.js/packages/dev/core/src/Materials/shaderMaterial.ts at master · BabylonJS/Babylon.js · GitHub](https://github.com/BabylonJS/Babylon.js/blob/master/packages/dev/core/src/Materials/shaderMaterial.ts)

```auto
public setArray2(name: string, value: number[]): ShaderMaterial
public setArray3(name: string, value: number[]): ShaderMaterial 
...

```

all of array setters expect number array not Vector

---

<div class="post-metadata">

**Author:** ![Hersir](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/hersir/32/108_2.png) [@Hersir](https://forum.babylonjs.com/u/Hersir)\
**Post date:** [June 30, 2023, 10:41am UTC](https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060/6 "2023-06-30T10:41:37Z")

</div>

but anyway thanks will convert to setVector3

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [June 30, 2023, 10:47am UTC](https://forum.babylonjs.com/t/solved-shader-material-with-webgpu/42060/7 "2023-06-30T10:47:02Z")

</div>

Yes, that’s expected.

The array will be split into chunks of 2/3 numbers internally (for setArray/setArray3).

For eg, `setArray3("XX", [1,2,3,4,5,6])` will actually create two vec3 (1,2,3) and (4,5,6) (the doc of the function explains it).
