Age | Commit message (Collapse) | Author |
|
|
|
This includes big improvement:
- The horizon search is decoupled from the BSDF evaluation. This means using multiple BSDF nodes have a much lower impact when enbaling AO.
- The horizon search is optimized by splitting the search into 4 corners searching similar directions to help which GPU cache coherence.
- The AO options are now uniforms and do not trigger shader recompilation (aka. freeze UI).
- Include a quality slider similar to the SSR one.
- Add a switch for disabling bounce light approximation.
- Fix problem with Bent Normals when occlusion get very dark.
- Add a denoise option to that takes the neighbors pixel values via glsl derivatives. This reduces noise but exhibit 2x2 blocky artifacts.
The downside : Separating the horizon search uses more memory (~3MB for each samples on HD viewport). We could lower the bit depth to 4bit per horizon but it produce noticeable banding (might be fixed with some dithering).
|
|
For rendering hair fibers the edit mode should just use the underlying data.
|
|
|
|
This fix a bug when occluder are on the edge of the screen and occludes more than they should.
Grouped the texture fetches together and clamp the ray at the border of the screen.
Also add a few util functions.
|
|
This enables to fake a second refraction event. This is great to simulate thin planar objects such as glass panels.
|
|
Theses Materials are rendered after the SSR pass.
The only difference with previous method is that they have a depth prepass (less overdraw) and are not sorted.
|
|
For the moment the only way to enable this is to:
- enable Screen Space REFLECTIONS.
- enable Screen Space Refraction in the SSR parameters.
- enable Screen Space Refraction in the material tab.
|
|
We generate a 3D lut to precompute the btdf intensity.
I decided to use a 64*64*16 (N dot V, ior, roughness) because the btdf varies less with roughness than with IOR.
We also remap the ior to better use the space in the LUT.
|
|
|
|
|
|
Subdivision works on the parent strands for efficiency. The fibers lengths
are based on the final subdivided length of parents, so no changes to the
shader are required.
This would be nicer with a tesselation shader, but this feature is not
available in Blender 2.8.
|
|
number of hairs.
It turns out that 1D textures have the same size limit on their 1 axis as 2D textures.
This limits the potential number of hair dramatically, even though the actual size of
the texture is very small. Using a 2D texture and wrapping the index avoids this problem.
|
|
This allows the shader to use proper lighting from the standard Eevee shaders.
The code for interpolating hair strands is in a glsl library file to facilitate
use in other engines later.
|
|
Reduce overdraw. 0.4ms goes to 0.01ms if background is completely occluded.
|
|
This add the possibility to use planar probe informations to create SSR.
This has 2 advantages:
- Tracing is less expensive since the hit is found much quicker.
- We have much less artifact due to missing information.
There is still area for improvement.
|
|
This way we don't have float precision issue we had before and we save some bandwidth.
|
|
Output in 2 buffers Normals, Specular Color and roughness.
This way we can raytrace in a defered fashion and blend the exact contribution of the specular lobe on top of the opaque pass.
|
|
|
|
|
|
|
|
Also disable for dyntopo & multires since its currently not supported.
|
|
Support using full material shading in sculpt & paint modes mode.
Access 'Full Shading' from the display panel when in paint modes.
|
|
Fixes T52024
|
|
|
|
|
|
|
|
|
|
This introduces a new transparency pass.
It bypass the radial distance encoding in alpha for the transparent shaders.
|
|
|
|
Hashed Alpha transparency offers a noisy output but has the benefit of being correctly ordered. Noise can be attenuated with Multisampling / AntiAliasing.
|
|
|
|
This enables texturing of the noise via procedural or baked textures.
Note that it gets quickly really heavy.
|
|
Render the transmittance in another color buffer and apply it separatelly.
It's a bit more slow because the upsample step needs to be done twice.
|
|
Only volume scatter is implemented for now.
|
|
|
|
This fix the behaviour of the light path node that separates the probes background from the viewport background.
|
|
|
|
This will enable creating shading models more easily.
|
|
Read from the GPUMaterial to find custom-data layers used for drawing.
This resolves problem where having UV's would always calculate tangents
causing noticeable slow down compared to 2.7x.
|
|
To know which custom-data layers will be needed in the mesh.
No functional change yet.
|
|
Add GPU_material_from_nodetree_find to avoid having to construct other
arguments which won't be used in the case the material is exists.
|
|
This implements UV support for Eevee hair, enabling the usage of
textures.
|
|
Now it matches world cubemap perfectly.
|
|
The problem was that the depth prepass was using the clip plane but not the shading pass.
During the clipping stage, the triangle is converted to a quad clipped to the given clip plane.
But this introduce subtle changes in the depth when this new geometry is rasterized. Since the shading pass was using an EQUAL depth test, the depth values from the shading pass were not always equal to the depth prepass.
Enabling clipping in the shading vertex shader has a too small impact to require a dedicated shader.
|
|
|
|
Also assert if texture does not exists in draw manager. Keeping it sane.
|
|
Implement GTAO (Ground Truth Ambient Occlusion) which is a special case of Horizon Based Ambient Occlusion that is more physically accurate.
Also add a bent normal option to sample indirect irradiance (diffuse lighting) with the least occluded direction.
|
|
- Unify variations between default shaders and material shader.
- Only create default shader passes if needed.
Downside is that we have a big array of passes and shading grp in the vedata ... And it will double in size each time a new variation flag is added.
|
|
Use consistent prefix for gawain API names as well as
some abbreviations to avoid over-long names, see: D2678
|