Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-01-22Eevee: Put all constant uniforms in a global UBO.Clément Foucault
This is an optimization / cleanup commit. The use of a global ubo remove lots of uniform lookups and only transfert data when needed. Lots of renaming for more consistent codestyle.
2018-01-18Eevee: Implement new LTC algorithm for Sphere Lights.Clément Foucault
This is an improvement on the old spining quad method that was giving artifacts when the reflection ray was nearly aligned with the sphere center. This might be a bit heavier but it's worth it.
2018-01-17Eevee: Perf: Update noises (in utilTex) via GPU drawing.Clément Foucault
This leads to a ~3ms improvement of CPU time during drawing. This prevent the rendering from being stalled waiting for the texture data to be transfered.
2018-01-17Cleanup: replace BLI_dynstr w/ BLI_string_joinNCampbell Barton
Use in place of recently reverted 'DRW_shader_create_lib'
2018-01-17Revert "Fix use-after free in DRW_shader_create_with_lib"Campbell Barton
Caused an error entering edit-mode. d60f26f37a & 2659500835
2018-01-17Eevee: SSS: Fix OpenGL error when enabling TRANSLUCENCY but not SSSS.Clément Foucault
This was causing this error: "Different sampler types for same sample texture unit in fragment shader"
2018-01-17DRW: Codestyle refactor: Use macro to create shader libs.Clément Foucault
This clears up the code from many DynStr usage. Easier to read.
2018-01-16Eevee: Fix Hashed Alpha.Clément Foucault
Now hashed alpha materials are stable when moving the camera/not using TAA. It also converge to a noise free image when using TAA. No more numerical imprecision. There still can be situations with multiple overlapping transparent surfaces that can lead to residual noise.
2018-01-16Eevee: AO: Removes samples and denoise options.Clément Foucault
This comes with a lot of code simplification that leads to a small performance improvement.
2018-01-16Eevee: SSR: Remove ray count and use integer texture for hit coord.Clément Foucault
Using GL_RG16I texture for the hit coordinates increase tremendously the precision of the hit. The sign of the integer is used to 2 flags (has_hit and is_planar). We do not store the depth and retrieve it from the depth buffer (increasing bandwith by +8bit/px). The PDF is stored into another GL_R16F texture. We remove the raycount for simplicity and to reduce compilation time (less branching in refraction shader).
2018-01-16Eevee: Fix noise correlation in the blue noise update.Clément Foucault
2018-01-04Eevee: SSR: Fix ssr nor working in ogl render.Clément Foucault
2017-12-14Eevee: Support for objects of type Curve, Surface and TextGermano
2017-12-04Eevee: Irradiance Visibility: Initial ImplementationClément Foucault
This augment the existing irradiance grid with a new visibility precomputation. We store a small shadowmap for each grid sample so that light does not leak through walls and such. The visibility parameter are similar to the one used by the Variance Shadow Map for point lights. Technical details: We store the visibility in the same texture (array) as the irradiance itself (in order to reduce the number of sampler). But the irradiance and the visibility are not the same data so we must encode them in order to use the same texture format. We use RGBA8 normalized texture and encode irradiance as RGBE (shared exponent). Using RGBE encoding instead of R11_G11_B10 may lead to some lighting changes, but quality seems to be nearly the same in my test cases. Using full RGBA16/32F maybe a future option but that will require much more memory and reduce the perf significantly. Visibility moments (VSM) are encoded as 16bits fixed point precision using a special range. This seems to retain enough precision for the needs. Also interpolation does not seems to be big problem (even though it's incorrect).
2017-12-04Cleanup: whitespaceCampbell Barton
2017-11-25Eevee: Add SSS support in probesClément Foucault
Previously the lighting of SSS material was not present in reflection probe or irradiance grid. This does not compute the SSS correctly but at least output the corresponding irradiance power to the correct output.
2017-11-25Eevee: SSS: Add separated Albedo option.Clément Foucault
This option prevent from automatically blurring the albedo color applied to the SSS. While this is great for preserving details it can bleed more light onto the nearby objects since the blurring will be done on pure "white" irradiance. This issue is to be tackled in a separate commit.
2017-11-24Eevee: Fix SSR adding too much light.Clément Foucault
Basically the probes were rendered twice.
2017-11-24Eevee: Refactor of lit_surface_frag.glslClément Foucault
This cleanup removes the need of gigantic code duplication for each closure. This also make some preformance improvement since it removes some branches and duplicated loops. It also fix some mismatch (between cycles and eevee) with the principled shader.
2017-11-23Rename any instance of scene layer or render layer in code with view layerDalai Felinto
The RenderResult struct still has a listbase of RenderLayer, but that's ok since this is strictly for rendering. * Subversion bump (to 2.80.2) * DNA low level doversion (renames) - only for .blend created since 2.80 started Note: We can't use DNA_struct_elem_find or get file version in init_structDNA, so we are manually iterating over the array of the SDNA elements instead. Note 2: This doversion change with renames can be reverted in a few months. But so far it's required for 2.8 files created between October 2016 and now. Reviewers: campbellbarton, sergey Differential Revision: https://developer.blender.org/D2927
2017-11-22Eevee : SSS : Add Translucency support.Clément Foucault
This adds the possibility to simulate things like red ears with strong backlight or material with high scattering distances. To enable it you need to turn on the "Subsurface Translucency" option in the "Options" tab of the Material Panel (and of course to have "regular" SSS enabled in both render settings and material options). Since the effect is adding another overhead I prefer to make it optional. But this is open to discussion. Be aware that the effect only works for direct lights (so no indirect/world lighting) that have shadowmaps, and is affected by the "softness" of the shadowmap and resolution. Technical notes: This is inspired by http://www.iryoku.com/translucency/ but goes a bit beyond that. We do not use a sum of gaussian to apply in regards to the object thickness but we precompute a 1D kernel texture. This texture stores the light transmited to a point at the back of an infinite slab of material of variying thickness. We make the assumption that the slab is perpendicular to the light so that no fresnel or diffusion term is taken into account. The light is considered constant. If the setup is similar to the one assume during the profile baking, the realtime render matches cycles reference. Due to these assumptions the computed transmitted light is in most cases too bright for curvy objects. Finally we jitter the shadow map sample per pixel so we can simulate dispersion inside the medium. Radius of the dispersion is in world space and derived by from the "soft" shadowmap parameter. Idea for this come from this presentation http://www.iryoku.com/stare-into-the-future (slide 164).
2017-11-20Cleanup: line length, right shiftCampbell Barton
2017-11-20Cleanup: BLI headers firstCampbell Barton
Also move descriptions into doxy header
2017-11-19Eevee : Fix bug with SSS and SSR active node selectionClément Foucault
The bug was affecting the ability to correctly edit the expected SSS profile.
2017-11-14Eevee: SSS: Add Quality settings.Clément Foucault
Samples : pretty self explanatory. Jitter Threshold : Reduce cache misses and improve performance (greatly) by lowering this value. This settings let user decide how many samples should be jittered (rotated) to reduce banding artifacts.
2017-11-14Eevee: Initial Separable Subsurface Scattering implementation.Clément Foucault
How to use: - Enable subsurface scattering in the render options. - Add Subsurface BSDF to your shader. - Check "Screen Space Subsurface Scattering" in the material panel options. This initial implementation has a few limitations: - only supports gaussian SSS. - Does not support principled shader. - The radius parameters is baked down to a number of samples and then put into an UBO. This means the radius input socket cannot be used. You need to tweak the default vector directly. - The "texture blur" is considered as always set to 1
2017-11-01Eevee: Effects: Split each effect in it's own file.Clément Foucault
This also: - make sure to only compile the shader needed by the active effects. - same thing for the shading groups. - disable TAA if motion blur is active (avoid infinite refresh).
2017-10-27Eevee: Volumetrics: Add Volume object support.Clément Foucault
This is quite basic as it only support boundbing boxes. But the material can refine the volume shape in anyway the user like. To overcome this limitation, a voxelisation should be done on the mesh (generating a SDF maybe?) and tested against every volumetric cell.
2017-10-27Eevee: Volumetrics: Add volumetric support to alpha blended meshes.Clément Foucault
2017-10-27Eevee: Overhaul the volumetric system.Clément Foucault
The system now uses several 3D textures in order to decouple every steps of the volumetric rendering. See https://www.ea.com/frostbite/news/physically-based-unified-volumetric-rendering-in-frostbite for more details. On the technical side, instead of using a compute shader to populate the 3D textures we use layered rendering with a geometry shader to render 1 fullscreen triangle per 3D texture slice.
2017-10-11Eevee: Fix hashed and alpha clip transparency.Clément Foucault
2017-10-07Cleanup: style, duplicate includesCampbell Barton
2017-10-07Eevee: Modify the raycast function to be more flexible.Clément Foucault
Make quality a parameter, and modify the ray end to be premultiplied so that the raytrace is done on a range. This is in order to add contact shadows.
2017-09-27Eevee: Use fmod instead of floor.Clément Foucault
2017-09-12Eevee: Fix T52713: SSR not working in AMDClément Foucault
This was cause by a fairly funky unitialize buffer (last frame) that was causing NANs during the SSR resolve stage. They were then propagated to the whole image during the next swap. Bypassing the SSR completly if no valid history exists fixes the problem. Also disabling SSR data output in this case so we can have correct reflection in the 1st history buffer.
2017-09-12Eevee: Fix T52510: assert with volume defines.Clément Foucault
This assert was not making sense at all. Removing
2017-09-12Eevee: Fix wrong shadow Orco mapping.Clément Foucault
2017-09-12Eevee: Fix T52593Clément Foucault
Use a placeholder texture to remove problems with sampler with no texture bound to it.
2017-09-10Eevee: Add Cascaded Shadow Map support with filtering.Clément Foucault
This brings some data structure changes. Shared shadow data are stored in ShadowData (in glsl) (aka EEVEE_Shadow in C). This structure contains the array indices of the first shadow element of this shadow "object". It also contains how many shadow to evaluate (to be used for Multiple shadow maps). The filtering is noisy and needs improvement.
2017-09-10Eevee: Add Variance Shadow MappingClément Foucault
This is an alternative to ESM. It does not suffer the same bleeding artifacts.
2017-09-10Eevee: Refactor Shadow SystemClément Foucault
- Use only one 2d texture array to store all shadowmaps. - Allow to change shadow maps resolution. - Do not output radial distance when rendering shadowmaps. This will allow fast rendering of shadowmaps when we will drop the use of geometry shaders.
2017-08-22Eevee: Fix T52486Clément Foucault
For that introduce an update function for textures.
2017-08-21Eevee: Offset the for each AA sample.Clément Foucault
This means we have less overall noise for rendered image. SSR, AO, and Refraction are affected by this change. SSR still exhibit artifacts because the reconstruction pattern needs to change every frame (TODO).
2017-08-18Eevee: Rework GTAOClément Foucault
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).
2017-08-13Eevee: Optimize and improve GTAO Horizon searchClément Foucault
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.
2017-08-10Eevee: Refraction: Add "thickness" parameter.Clément Foucault
This enables to fake a second refraction event. This is great to simulate thin planar objects such as glass panels.
2017-08-10Eevee: Refraction: Make it available for opaque materials.Clément Foucault
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.
2017-08-10Eevee: Add Screen Space Refraction.Clément Foucault
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.
2017-08-10Eevee: LUT generation.Clément Foucault
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.
2017-08-10Eevee: Add precomputed BTDF LUT.Clément Foucault