Cloning a material with a video texture freezes the video

In this PG I create a video texture and then clone the material that has the video texture and the video texture freezes. In this PG I create a new material instead of cloning the old one. Is there a way to clone a material with a video texture without freezing the video?

When you do clone.material.diffuseTexture.dispose() you dispose the video texture. Simply commenting the line make the PG work.

How does disposing of a cloned texture dispose of the source’s texture? I verified the textures have different unique ids. I dispose of the texture because I need to create a new one for the clone, i.e. the “A1” texture…

Maybe there’s some specificities with the Web Cam stream, as it seems to work with a regular texture:

cc @sebavan might know more about video texture?

They would share the same internal Texture by default for perf.

Gotcha. Is there a way to clone the material without cloning the texture? Or is the best option to not clone the material and make a new one since none of the textures will be shared.

Actually let me dig in as it should not happen they way the texture has been created.

1 Like

The webcam stream is disposed during the texture dispose() you can restart it right after dispose: https://playground.babylonjs.com/#RS90XC#21

3 Likes

Sorry @sebavan Not working for me for some reason in production. I think our situation is a little more complicated but not sure how to replicate in a PG. Is there any value to cloning a material if I don’t want to clone the textures? If so, would you be willing to accept a PR that would make cloning textures optional when cloning material?

you could detach the texture from the material before cloning. This will be by far the easiest.

3 Likes