Search Issue Tracker
Fixed
Fixed in 2022.3.23f1, 2023.2.17f1, 6000.0.0b14
Votes
18
Found in
2022.3.7f1
2023.1.9f1
2023.2.0b4
Issue ID
UUM-46144
Regression
Yes
WebCamTexture.GetPixels32 returns black pixels when in WebGL Player
Reproduction steps:
1. Open the “WebcamGetPixels32“ project
2. Open the “Sample” scene
3. Ensure a webcam device or a virtual camera is connected
4. Ensure WebGL is the selected platform in Build Settings
5. Build And Run
6. Observe the middle of the Player
Expected result: Webcam feed is visible
Actual result: Black pixels are visible instead of the webcam feed
Reproduced in: 2022.2.0a12, 2022.3.7f1, 2023.1.9f1, 2023.2.0b4
Not reproduced in: 2021.3.29f1, 2022.2.0a11
Reproduced on: macOS 13.4.1 (Intel), Windows 10
Not reproduced on: No other environment tested
Note: Not reproduced in Play Mode and Windows Player, while OSX Player failed to build
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Red squares instead of ticks in Import Activity Window options dropdown
- Multiple simultaneous input with the touch screen sometimes leaves button in not default state
- Crash on ShowDelayedContextMenu(bool) when changing the Size options of a Visual Element in the UIToolkit Inspector
- Crash when total memory consumption is over 2GB
- Red dots are rendered when copying texture with ASTC format and CompressGpu
maxi_sn
Jun 14, 2024 13:04
Is it fixed in 2022.3.22f1?
Nyro
Jan 16, 2024 23:50
So, there is a Terrible work around.
Blit the texture from the camera to a rendertexture > convert it to Texture2D > GetPixels32 from this Texture2D
Does this work - Yes
Is it performant - Hell no!
Should you do it - how desperate are you?
var rdTexture = new RenderTexture(camTexture.width, camTexture.height, 0);
Graphics.Blit(camTexture, rdTexture);
texture2D = ToTexture2D(rdTexture);
var pixelData = texture2D.GetPixels32();
public Texture2D ToTexture2D(RenderTexture rTex)
{
Texture2D tex = new Texture2D(rTex.width, rTex.height, TextureFormat.RGB24, false);
var old_rt = RenderTexture.active;
RenderTexture.active = rTex;
tex.ReadPixels(new Rect(0, 0, rTex.width, rTex.height), 0, 0);
tex.Apply();
RenderTexture.active = old_rt;
return tex;
}
Tonio1308
Dec 21, 2023 05:55
We have the same problem in our 2023.2.2 WebGL project.
We need webCamTexture GetPixels32() as soon as possible.
Thank you
faleoc
Dec 18, 2023 05:09
I have the same issue, which blocked my project.
ChengruRa
Dec 05, 2023 10:15
Using Unity version 2021.3.32f1 can solve this issue, while versions 2022 and 2023 both result in black pixels.
CameronGoosen
Oct 06, 2023 07:40
I'm having this issue on WebGL, I've tried everything to get around this issue, even tried to bypass the GetPixels32 with this code which works on editor:
var tex2D = new Texture2D(webCamTexture.width, webCamTexture.height, TextureFormat.ARGB32, false);
Graphics.CopyTexture(RawImage.texture, tex2D);
but it seems that its broken entirely, it still only returns black pixels and you'll probably only be able to get the image if you make your own Javascript plugin.
nigorigori
Oct 01, 2023 09:04
This issue is very critical in the app I am currently creating and I hope it will be fixed ASAP.
https://forum.unity.com/threads/webcamtexture-returns-black-texture-on-android-browsers-and-webgl.1402138/