Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
[ImageEffects] Bloom Testers Matt Dean
Developers Keijiro Takahashi
Version 1.1 Last Update: 26/04/2016
Joke Test Status Quality Status
Why did the scarecrow get promoted? He was outstanding in his field.
RUN #2 COMPLETE
PASS
Test Level
1 Basic Functionality
2 Typical Usage
3 Extensive Usage
4 Integrations
5 Real World Usage
6 NonFunctional
7 Stress Testing
Coverage
Changelist
26/04/16 Tested on 5.4b16, added Orthographic test, tested UI changes, updated doc format
Bug ID Bug Status Bug Title
775584 FIXED [ImageEffects] Bloom effects different colours at different thresholds
Suggestions/Observations
Personally I would want a falloff curve for the effect’s intensity Would it be appropriate to add a Dirty Lens effect?
Hardware / Software Used
i76820HK @ 2.7GHz, 16GB DDR3, GeForce GTX 980m Windows 10 Version 1511 Run #1 Unity Version 5.3.3p2 (Deferred/Linear unless specified) Run #2 Unity Version 5.4.0b16 (Deferred/Linear unless specified) Unity Profiler Photoshop CC 2015 Windows 10 1511 build 10586.63 OSX 10.11 FxPro Windows Snipping Tool
Key Colour Code Outline Icon Individual Test Icon
In Progress N/A
Working/Fixed N/A
Question/Comment
Major Concern
Bug/Issue
Unable to Test
Function Tests Testing that each function behaves to expectation
Test Outcome
Group Variables
Threshold
Performs as expected in isolation. UX is much better as a float, any clamped maximum would have been arbitrary and dangerous.
Threshold, Range 0 to 10 (arbitrary range)
Soft Knee
Adjusts the softness of the knee of the effect. Works as expected.
Radius
Adjust the radius of the bloom effect as expected. New radius is much better.
Radius, Range 1 to 7 (current range)
Intensity
Just a multiplier for the effects blending onto the image and works as intended
Intensity, Range 0 2 (arbitrary range)
High Quality
Checked shader code for sampling. Tested High Quality switch by returning red/blue to screen from shader dependant on component UI. Checked C# code for halving of the filter buffer. if (!settings.highQuality) tw /= 2; th /= 2;
High Quality, on & off
Group Misc
Response Curve Graph
Addition of the response curve graph is very much appreciated. Its a very useful visualization of the effect. Works as intended.
Channel Consistency
Created a scene containing 3 quads of emission value 1 representing RGB spectrum. Measured the colour value of a pixel, 4 pixels up from the top edge of each quad, to test the intensity of the bloom effect on each channel. Ran test on multiple bloom settings. Previously this test failed, this is now fixed.
Red, green and blue emissive planes. Bloom power sampled.
Render Texture
Rendered a duplicate camera to a Render Texture, applied that render texture to a Raw Image on Canvas of a third Camera. Switched between Cameras 1 and 3 to check for issues. Camera with effect applied renders correctly to a Render Texture.
Orthographic Camera
Switched the camera to orthographic perspective. Effect still works as expected.
Graphics APIs Windows
Used scene “ScenarioDarkEnvironment” DirectX 11 No issue DirectX 12 No issue DirectX 9 No issue GLCore No issue
Graphics APIs OSX
Used scene “ScenarioDarkEnvironment” GLCore No issue
Metal No issue
Scenario Test 1 Material Response Testing through meaningful and complex interactions
Description
The purpose of this test is to determine whether materials an artist would associate with a Bloom effect give a desirable result, and whether the components variables give the artist the control needed to “clamp” the Bloom to only affect the materials they might want.
Metals
Full Image
Here; the results are good. Clamping the bloom to not affect the matte metal and standard nonmetal spheres, using just the Threshold and Exposure variables, was easy. This gives the artist a good amount of control over the bloom using the remaining variables.
Whites
Full Image
Here; the results are not quite as good, but expected as whites are always blown out by bloom effects. This is the maximum achievable “whiteness” of a matte sphere when trying to preserve Bloom response from metals (without resulting in a notable Bloom response from the white). In honesty, this is a better result than I expected.
Water Reflections
Full Image
Here I added Water4Advanced to test its “optimal” Bloom against that of the metals. It seems that its range is almost the same, giving an artist great control of how the water’s reflections are affected by the Bloom.
Emissions
Full Image
Previously this test failed (due to the inconsistency between the effect on different colours). Now this issue is fixed balancing the scene has become simple.
Additives
Full Image
Here; I used “Fireworks Collection” from the asset store to test Bloom’s effect on additive materials. Within the same range as is appropriate for metals/water the result is good and the range is large enough to allow adjustment to the user’s taste.
Skies
Full Image
Here; I used “AllSky” from the asset store, again, to test the Bloom’s effect on a generic example of a bright day skybox. As expected, the lower end of the threshold range that is appropriate for the other materials tested is simply too much for a bright skybox. This image is taken with a threshold of 0.7 (only 0.1 higher than the lowest appropriate for the other materials) and I believe it demonstrates the lowest threshold value appropriate for the skybox. This still leaves a reasonable amount of range for adjustment to taste.
Scenario Test 2 Dark Environment Testing through meaningful and complex interactions
Description
The purpose of this test is to determine how usable the effect is in a dark interior environment. Focus is on balancing bright areas of light against metals and emissives in an environment that is otherwise outside the bloom threshold.
The Scene
Full Image
I decided to use a cavern scene to test dark interior environments as they are conducive to areas of bright coloured light and emission in video games. A character with a range of realistic material and a pure metallic duplicate were added to test balancing the metal’s bloom response against the rest of the scene.
General Balancing
Full Image
Here is a comparison with Bloom enabled (left) and disabled (right). I was able to find a good balance between the bright lighting, metals and ground specular with relative ease. The green emission was too strong but easily toned down on a permaterial basis. However, this issue is simply the one mentioned earlier.
Anti Flicker
Full Image
This is a comparison with Anti Flicker on (left) and off (right). The reduction in the Bloom’s intensity in the tight bright areas (see metal highlights) when Anti Flicker is enabled is worrying. In my understanding of the Anti Flicker feature users will start with it disabled, only enabling it when a flickering issue is noticed (due to performance impact). This may annoy users, as when they enable Anti Flicker this will need to rebalance their Bloom effect (rebalancing to make up for this is not easy or intuitive).
High Quality
Full Image
This is a comparison with High Quality on (left) and off (right). In this particular example, the difference between High Quality and not is confusingly inconsistent. Some areas receive a broader stronger Bloom effect with High Quality and some areas of the same material type receive the opposite. This will require more specific testing, but the result with either mode,in this case, is good.
Artistic Comparison: Unity Depreciated
Full Image
This is a comparison with the new Bloom effect (left) and the depreciated effect (right). You can clearly see the increase in quality in the new effect, especially on the emissive surfaces. The depreciated effect also appears to “discolour” the image, pushing, specifically, the orange colours towards red. This results in a need to adjust light texture/values after the fact or add unnecessary colour correction. With regards to UX; ignoring the Lens Flare options on the depreciated effect, which assumedly would be part of a separate effect, the new components UI is simpler, more intuitive and offers greater control over the effect. Conclusion: New effect is better.
Artistic Comparison: FxPro
Full Image
This is a comparison with the new Bloom effect (left) and Bloom from FxPro from Asset Store (right). Whilst I believe the visual quality between the two seems almost exactly comparable. I prefer the “falloff” of the new Bloom effect as it “bleeds” the light across small darker details in the brighter areas though (see strong orange highlight or gaps in the crystal). With regards to UX; setting aside that FxPro has all the UI controls for 4 effects in one component (which is not pleasant) I find the new Bloom gives greater control over the effect than FxPro. Conclusion: New effect is better.
HDR/LDR
Full Image
This is a comparison of LDR (left) and HDR (right). The Blooms effect on the areas lit above the 01 range is instantly recognisable and control of intensities outside this range does not restrict the artist’s ability to balance Bloom response within it.
Linear/Gamma
Full Image
This is a comparison of Linear (left) and Gamma (right) space. Ignoring the vast differences between the color spaces themselves the Blooms effect itself is consistent, as expected.
Deferred/Forward
Full Image
This is a comparison of Forward (left) and Deferred (right) rendering paths. Ignoring the difference in floor tone (which is not caused by the effect) the Blooms effect itself is consistent, as expected.
Performance Tests Testing performance impact of the feature
The purpose of this test is to determine how performant the new Bloom effect is and how it compares to Legacy and Competitor offerings. For the competitor used FxPro Bloom from the Asset Store. Statistics are the average CPU and GPU timings (in milliseconds) of the effect itself, gathered from Profiler running within the editor on the following scenes.
Dark Environment
Effect Options CPU (ms) GPU (ms)
Unity (New) LQ / No AntiFlicker 0.07 0.11
LQ / AntiFlicker 0.07 0.12
HQ / No AntiFlicker 0.08 0.18
HQ / AntiFlicker 0.09 0.26
Unity (Depreciated) LQ 0.10 0.09
HQ 0.13 0.11
FxPro LQ 0.17 0.08
HQ 0.21 0.12
Conclusion
Firstly, I believe that whilst there isn’t a lot of performance impact for the “High Quality” setting, the combination of AntiFlicker and High Quality makes enough impact for this option to remain in the Effect. The most notable difference between the new Bloom effect and the others I tested is that the new effect is more GPUbound than the competition. Across the board however, the new effect performs very well. I would expect a customer to be pleased with these results.
Risk Test 1 Anti Flicker Testing through difficult problems
Description
The purpose of this test is to determine whether the Anti Flicker functions correctly by designing a test that is both hard, and necessary to solve. In this case the problem will be a moving, aliased, pure white line.
The Problem
Full Image
This line, a 0.01 width Line Renderer with an unlit pure white material, creates a great amount of flickering when bloom is applied. This is caused by the aliasing of the line, and could be an extremely detrimental effect in final image quality of a real life scenario.
With Anti Flicker
Full Image
The same line, with Anti Flicker enabled, is solved by simply eliminating the Bloom effect from the line (notice how it is still present on the cubes). Whilst this is not going to fix the lines aliasing (which an Image Effect will obviously never do) it does reduce the visual damage to the image.
The Problem (0.3 Thickness)
Full Image
The same line with a thickness of 0.03 still has a great amount of flickering problems. This thickness of line is much more common in a real world emission case.
With Anti Flicker
Full Image
The same line, with Anti Flicker enabled, whilst not perfect, is considerably less hard on the eyes. This, in my opinion, is a successful Anti Flicker implementation, and I would expect that it will be used by a lot of projects.