The pixel color component read from the Unity renderTexture is bigger than 1.0 without HDR environment map.
I'm writing a mini program to test the reflectance of Unity PBS. I use six pure white (1,1,1,1) textures to construct a skybox as a GI source. Then I set a plane with Unity standard shader material and camera. In every frame, I change the material arguments (albedo, metallic, smoothness), and get the pixel color at the center of view.
The light source I use is not bigger than 1.0 (pure white skybox, not a HDR texture). So, why is the pixel color (as reflectance) is bigger than 1? I think it supposed to be less than 1.0. The biggest data I get is near to 5. Actually, if I use the color picker to check the color from screen, the color data is never bigger than 1.0.
Here's my code:
// code in OnPostRender()
Texture2D image = new Texture2D(2, 2, TextureFormat.RGBAFloat, false, true);
// only read the center four pixels
image.ReadPixels(new Rect(renderWidth/2, renderHeight/2, 2, 2), 0, 0);
Color a = new Color();
a = image.GetPixel(0, 0);
b = image.GetPixel(1, 0);
c = image.GetPixel(0, 1);
d = image.GetPixel(1, 1);
// average the four pixels to get the exact center color
return (a.r+b.r+c.r+d.r)/4.0f;
```