This really hinders unity, we need a gamma slider in the game. I know you can do this in post-process filter, but really there should be something more basic to control this.
How would it be simple or basic?
Perhaps you don’t understand how 3D rendering works. It might seem like a trivial thing, but it really isn’t.
If all you need is black-to-normal kind of control then parent a black textured quad in front of the camera and adjust the material’s opacity through script. Anything beyond that is far from simple.
To alter the colour/gamma of what’s rendered on a per pixel basis would need to be either a post-process filter which is Pro Only or you’d need to add an extra calculation to every single shader making unity on a whole slower.
You can do this yourself in the non-pro version of Unity but you’d need to edit all the built-in shaders. It’s totally possible to edit everything so that your players get a “simple slider”, but it would be a lot of work on your end. Having this as a built-in option would be very bad as it would add extra overhead and really isn’t needed. A good artist or a good understanding of lighting and good textures should be all that’s required to get your scenes looking the way you want.
Every PC game since the days of DOS has had a brightness slider in it. I can’t imagine it being that far out of reach. I assumed there was prolly some variable deep in the opengl SDK that controlled the brightness of an opengl window. But even if that not the case, and all these other games did implement it via an extra bit of code in the shader, still I don’t see how thats any big deal. What would it be? I imagine it’d be something like ShaderOutput * brightnessMultiplier. Multiplying the color output of a shader by a variable is not a big deal. Although I imagine thats not the case either, if its not a built in OGL variable then they probably just multiply the output of the entire framebuffer output.
Gamma I could understand as being more complex but I thought that new video cards had gamma functionality built into them at the hardware level.
the “multiply the output of the entire framebuffer” is kind of the answer: postfx is costly and pro only.
Pro actually has a color correction postfx shader you can use for more than just gamma.
And is controlled through the driver where you would set it as all others do so too. The drivers since GeForce 7 days on nvidia didn’t have the calibration screen to force game devs to work against what the driver provides with its work, to do the work again.
Intel had gamma correction in their drivers since the day they had TnL capable hardware (even GMA900 drivers contain it)
So one could consider the absence of the unneeded feature as a form of “punishment of stupids”
Although specific users have the attitude of ‘punishing the stupids’ (make things harder for new users, P0WN N00B5, etc…) However, the Unity development team has never given me that impression. Unity makes the greatest effort to make things as straightforward as they can for new users and hobbyists, who may never have gotten too deep into, say, gamma encoding and decoding before.
The information about gamma correction is not really very accurate in this thread. Gamma correction essentially pertains to adjusting an image for a specific monitor. It has nothing to do with shaders, post processing or the like. Those are completely different subjects, which is why one can turn off post processing altogether and still have gamma correction or why the most rudimentary games like Curse of the Catacombs had gamma correction. It is also the reason why you must apply gamma correction to photographs or movies and the reason why television sets apply gamma correction to received broadcast signals.
All of that aside, games appearing too bright on one system and too dark on the next seems to be a very common Unity problem, with few answers to be found. Nobody has actually come straight out and said it: Is gamma correction a feature only found in the professional version of Unity? If so, I can live with that. If not, I can live with that too. Either way, how have people actually been working around the problem? Just calling one another ‘stupids’ (or N00B5) is obviously not going to get anybody anywhere productive.
After having searched the forums thoroughly and having actually bought a Windows machine just to test, this is what I have discovered:
THE PROBLEM: For whatever reason, the colors and brightness between different machines may be radically different. This can make objects in the scene look weird or make objects completely invisible in some cases. I have observed this phenomenon with my own eyes on different computers. This has been attributed to gamma correction, although there is more debate over what gamma correction is than answers about fixing it. Either way, Unity does not current have gamma correction,. Or rather, as one dev puts it ‘Not yet’.
THE SUN: The most obvious solution to a scene that is too dark is to increase the intensity of the most important lights in the scene. For example, the sun. This solution produced the most OOOS and AHHHS. One person said it made my game ‘Look like a techno rave party’. It certainly makes things look prettier, but it didn’t actually solve the problem. It just made the objects that were visible look nicer.
AMBIENT LIGHT: Handily controlled by scripts (as well as accessable through render settings) is ambient light. This is where I got somewhere. From what I and my comrades observed, ambient lighting did not actually add light. It changed the colors of objects being rendered. The catch was that not everything seemed effected by ambient light. Self illuminated objects, objects obscured by fog and HUD (GUI) objects all remained different colors.
FOG: Unexpectedly, this had the most effect on ‘brightness’ and ‘gamma’ in my game. Your milage will probably vary. In any case, making the fog a different color from the background would make things in the fog easier to see. The brighter the fog, the brighter and more visible far objects appeared. And, just like ambient light, darker fog would also make far objects appear darker and often more visible.
BACKGROUND COLOR: After you’ve made the scene objects more visible, you may find your scene looks strange. The deep blue color of my background would appear black on all Windows machines we tested on, making our now pretty blue and red objects hang oddly in space. Background color can be scaled up or down via scripts to make it match the rest of the scene lighting.
GUI CONTROLS: You may find HUD or GUI objects are still too bright, too dark or an odd color. Using GUI controls, you can change the color via a script, rather than creating a different material for each person’s screen.
Hopefully this makes things easier for new users. If there are better solutions, please feel free to post them, as we are all eager to learn.