Hi everyone,
Since upgrading to PlayCanvas Engine 2.0 (currently 2.23.1), videos loaded from external URLs appear washed out and desaturated on iOS. The same videos looked correct before the upgrade, and other scene materials render correctly.
I’m using a dynamically created pc.Texture with videoTexture.setSource(video) and displaying it through a StandardMaterial’s emissiveMap.
I’ve tried both PIXELFORMAT_R8_G8_B8 and PIXELFORMAT_SRGBA8, as well as disabling tone mapping on the material, but the issue persists on iOS. Android and desktop work correctly with SRGBA8.
Could this be related to sRGB handling or video texture uploads in Engine 2.0? Is there a recommended configuration or known issue?
// Create a texture to hold the video frame data
this.videoTexture = new pc.Texture(app.graphicsDevice, {
// format: pc.PIXELFORMAT_R8_G8_B8,
format: pc.PIXELFORMAT_SRGBA8,
srgb: true,
// minFilter: pc.FILTER_LINEAR_MIPMAP_LINEAR,
minFilter: pc.FILTER_LINEAR,
magFilter: pc.FILTER_LINEAR,
addressU: pc.ADDRESS_CLAMP_TO_EDGE,
addressV: pc.ADDRESS_CLAMP_TO_EDGE,
mipmaps: false
});
this.videoTexture.setSource(video);
The material configuration via script:
this.app.on(this.playEvent, function (videoTexture) {
var material = this.screenMaterial.resource;
material.emissiveMap = videoTexture;
material.emissive.set(1, 1, 1);
material.emissiveVertexColor = false;
material.vertexColorGamma = false;
material.useTonemap = false;
material.update();
}, this);
I haven’t been able to figure out the cause of the issue on iOS. I’ve tried different texture formats, checked the material settings, and disabled other rendering options, but nothing has fixed it.
Since last year’s video also looks washed out now, even though it rendered correctly before, I suspect this might be related to the Engine 2.0 update rather than the video files themselves.
Thanks for any ideas or suggestions!

