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
2020-09-19Cleanup: consistent TODO/FIXME formatting for namesCampbell Barton
Following the most widely used convention for including todo's in the code, that is: `TODO(name):`, `FIXME(name)` ... etc.
2020-09-19EEVEE: Add support for GGX Multi-scatterClément Foucault
Based on http://jcgt.org/published/0008/01/03/ This is a simple trick that does *not* have a huge performance impact but does work pretty well. It just modifies the Fresnel term to account for the multibounce energy loss (coloration). However this makes the shader variations count double. To avoid this we use a uniform and pass the multiscatter use flag inside the sign of f90. This is a bit hacky but avoids many code duplication. This uses the simplification proposed by McAuley in A Journey Through Implementing Multiscattering BRDFs and Area Lights This does not handle area light differently than the IBL case but that's already an issue in current implementation. This is related to T68460. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8912
2020-09-12GPU: Add Image Load Store extension supportClément Foucault
This wraps the functionality used to speedup EEVEE volumetrics. This touches the rendering code of EEVEE as it should fix a mis-usage of the GL barrier. The barrier changed type and location, removing an unused barrier.
2020-09-10Cleanup: spellingCampbell Barton
2020-09-07EEVEE: Shaders testsJeroen Bakker
This will add the remaining static shaders to the eevee shader test suite. - Downsampling - GGX LUT generation - Mist - Motion Blur - Ambient Occlusion - Render Passes - Screen Raytracing - Shadows - Subsurface - Volumes Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D8779
2020-08-04Fix T79493: EEVEE LightProbe DisplayJeroen Bakker
Introduced by recent EEVEE GLSL refactoring {da741013a1e1}
2020-08-03Cleanup: remove trailing space, newlines at eofCampbell Barton
2020-07-30EEVEE: GLSL refactor/cleanupClément Foucault
- add the use of DRWShaderLibrary to EEVEE's glsl codebase to reduce code complexity and duplication. - split bsdf_common_lib.glsl into multiple sub library which are now shared with other engines. - the surface shader code is now more organised and have its own files. - change default world to use a material nodetree and make lookdev shader more clear. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D8306
2020-07-15Cleanup: EEVEE: Remove concentric samples.Clément Foucault
2020-07-15Cleanup: EEVEE: Remove unused IRRADIANCE_CUBEMAPClément Foucault
2020-07-02Fix T77686: EEVEE environment pass with film transparencyJeroen Bakker
When the film is set to transparent the environment pass should still be rendered solid. otherwise it renders black. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D8046
2020-06-30Fix T77069 EEVEE: Mix shader with holdout & transparent BSDF failsClément Foucault
This follows Cycles closer.
2020-06-23EEVEE: Motion Blur: Add accumulation motion blur for better precisionClément Foucault
This revisit the render pipeline to support time slicing for better motion blur. We support accumulation with or without the Post-process motion blur. If using the post-process, we reuse last step next motion data to avoid another scene reevaluation. This also adds support for hair motion blur which is handled in a similar way as mesh motion blur. The total number of samples is distributed evenly accross all timesteps to avoid sampling weighting issues. For this reason, the sample count is (internally) rounded up to the next multiple of the step count. Only FX Motion BLur: {F8632258} FX Motion Blur + 4 time steps: {F8632260} FX Motion Blur + 32 time steps: {F8632261} Reviewed By: jbakker Differential Revision: https://developer.blender.org/D8079
2020-06-19EEEVEE: Object Motion Blur: Initial ImplementationClément Foucault
This adds object motion blur vectors for EEVEE as well as better noise reduction for it. For TAA reprojection we just compute the motion vector on the fly based on camera motion and depth buffer. This makes possible to store another motion vector only for the blurring which is not useful for TAA history fetching. Motion Data is saved per object & per geometry if using deformation blur. We support deformation motion blur by saving previous VBO and modifying the actual GPUBatch for the geometry to include theses VBOs. We store Previous and Next frame motion in the same motion vector buffer (RG for prev and BA for next). This makes non linear motion blur (like rotating objects) less prone to outward/inward blur. We also improve the motion blur post process to expand outside the objects border. We use a tile base approach and the max size of the blur is set via a new render setting. We use a background reconstruction method that needs another setting (Background Separation). Sampling is done using a fixed 8 dithered samples per direction. The final render samples will clear the noise like other stochastic effects. One caveat is that hair particles are not yet supported. Support will come in another patch. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D7297
2020-06-03DRW: Remove use of builtin matrices and replace by common_view_libClément Foucault
2020-06-02EEVEE: Refactor of eevee_material.cClément Foucault
These are the modifications: -With DRW modification we reduce the number of passes we need to populate. -Rename passes for consistent naming. -Reduce complexity in code compilation -Cleanup how renderpass accumulation passes are setup, using pass instances. -Make sculpt mode compatible with shadows -Make hair passes compatible with SSS -Error shader and lookdev materials now use standalone materials. -Support default shader (world and material) using a default nodetree internally. -Change BLEND_CLIP to be emulated by gpu nodetree. Making less shader variations. -Use BLI_memblock for cache memory allocation. -Renderpasses are handled by switching a UBO ref bind. One major hack in this patch is the use of modified pointer as ghash keys. This rely on the assumption that the keys will never overlap because the number of options per key will never be bigger than the pointed struct. The use of one single nodetree to support default material is also a bit hacky since it won't support concurent usage of this nodetree. (see EEVEE_shader_default_surface_nodetree) Another change is that objects with shader errors now appear solid magenta instead of shaded magenta. This is only because of code reuse purpose but could be changed if really needed. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D7642
2020-03-25Alpha hash support for hair in EEveeJoe Eagar
This patch adds support for alpha hash for hair rendering in EEvee. Here's a comparison of with alpha hashing: {F7588610} And no alpha hashing: {F7588615} Note that this needs "soft shadows" enabled, otherwise shadows will be noisy; here's a render with soft shadows disabled: {F7588621} Reviewed By: fclem Differential Revision: https://developer.blender.org/D5221
2020-03-19Cleanup: fix typos in commentsBrecht Van Lommel
Contributed by luzpaz. Differential Revision: https://developer.blender.org/D7133
2020-03-18Volumes: add render settings for volume datablockBrecht Van Lommel
* Space: volume density and step size in object or world space * Step Size: override automatic step size * Clipping: values below this are ignored for tighter volume bounds The last two are Cycles only currently. Ref T73201
2020-03-18Objects: Eevee and workbench rendering of new Volume, Hair, PointCloudBrecht Van Lommel
Only the volume drawing part is really finished and exposed to the user. Hair plugs into the existing hair rendering code and is fairly straightforward. The pointcloud drawing is a hack using overlays rather than Eevee and workbench. The most tricky part for volume rendering is the case where each volume grid has a different transform, which requires an additional matrix in the shader and non-trivial logic in Eevee volume drawing. In the common case were all the transforms match we don't use the additional per-grid matrix in the shader. Ref T73201, T68981 Differential Revision: https://developer.blender.org/D6955
2020-03-11EEVEE: Replace octahedron reflection probe by cubemap arrayClément Foucault
We implement cubemap array support for EEVEE's lightcache reflection probes. This removes stretched texels and bottom hemisphere seams artifacts caused by the octahedral projection previously used. This introduce versioning code for the lightcache which will discard any lightcache version that is not compatible. Differential Revision: https://developer.blender.org/D7066
2020-03-05Fix T74431: EEVEE AO Render PassJeroen Bakker
Missing code-path in recent refactoring.
2020-03-05Cleanup: formatting, strip trailing spaceCampbell Barton
2020-03-03Revert "Fix T74110: EEVEE Shadow Pass"Jeroen Bakker
This reverts commit 403bb357ae2b1d2561a0d77c96035ba54c197cbd. The old implementation matches cycles closer. See T74378
2020-03-02Fix crash when compiling renderpass shader on some AMD driversGermano Cavalcante
Differential Revision: https://developer.blender.org/D6959
2020-02-27EEVEE: Shadow Render PassJeroen Bakker
Revert the change that renders the background black.
2020-02-27Fix T74063: EEVEE Render PassesJeroen Bakker
Cycles recently fixed this issue, EEVEE needed to be adapted to output similar results in the light passes. This patch implements cycles `safe_divide_even_color` function to a GLSL function that will be used when extracting the light passes. Reviewed By: fclem Differential Revision: https://developer.blender.org/D6948
2020-02-27Fix T74110: EEVEE Shadow PassJeroen Bakker
Shadow could penetrate occluded geometry. This patch adds a check to see if the light is in the right location to light the pixel. Reviewed By: fclem Differential Revision: https://developer.blender.org/D6918
2020-02-27Fix T74229: EEVEE Bloom + TransparencyJeroen Bakker
Bug was introduced by the render passes. We had to tweak the bloom shader a bit so we could reuse it. After that tweaking the original alpha was ignored. This patch will read and store the correct alpha channel.
2020-02-26EEVEE: Fix crash on certain drivers caused by redefined constantClément Foucault
2020-02-25EEVEE: Lookdev: Add support for partially blurred backgroundClément Foucault
This is using the GGX probe as background. This has the drawback of having the resolution choosed in the indirect lighting setting. The blurring is not really high-quality. The pros is that it has a simple implementation and is fast to evaluate. This patch also fades the background alpha to make overlay engine draw the default background color in the correct color space. Removing one colorspace hack. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D6895
2020-02-21EEVEE: Render PassesJeroen Bakker
This patch adds new render passes to EEVEE. These passes include: * Emission * Diffuse Light * Diffuse Color * Glossy Light * Glossy Color * Environment * Volume Scattering * Volume Transmission * Bloom * Shadow With these passes it will be possible to use EEVEE effectively for compositing. During development we kept a close eye on how to get similar results compared to cycles render passes there are some differences that are related to how EEVEE works. For EEVEE we combined the passes to `Diffuse` and `Specular`. There are no transmittance or sss passes anymore. Cycles will be changed accordingly. Cycles volume transmittance is added to multiple surface col passes. For EEVEE we left the volume transmittance as a separate pass. Known Limitations * All materials that use alpha blending will not be rendered in the render passes. Other transparency modes are supported. * More GPU memory is required to store the render passes. When rendering a HD image with all render passes enabled at max extra 570MB GPU memory is required. Implementation Details An overview of render passes have been described in https://wiki.blender.org/wiki/Source/Render/EEVEE/RenderPasses Future Developments * In this implementation the materials are re-rendered for Diffuse/Glossy and Emission passes. We could use multi target rendering to improve the render speed. * Other passes can be added later * Don't render material based passes when only requesting AO or Shadow. * Add more passes to the system. These could include Cryptomatte, AOV's, Vector, ObjectID, MaterialID, UV. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D6331
2020-01-29EEVEE: Micro optimize disk lightClément Foucault
Try to never do operation twice and try to use MADD operations. Even if this is very unlikely to make any difference, it can help compilers do some optimization. I did not measure any difference as probes have much higher impact on render time because of texture lookups. Note that disk light is currently the most expensive light type so it does not hurt to micro optimize.
2020-01-29Fix T67060 EEVEE: Noise caused by disk lightsClément Foucault
This is an issue on some drivers that might output NaN out of sqrt if the number is infinity.
2020-01-23Fix T66956 EEVEE: NaN produced by bad geometry mess with the DoFClément Foucault
Sanitize the source of the depth of field.
2020-01-20Fix T59747 EEVEE: Bug on EnvironmentTextureClément Foucault
2020-01-16Fix EEVEE: Planar Reflection data has inverted facingClément Foucault
Unreported bug
2020-01-14Fix T71402 EEVEE: Transparent material add volume scatteringClément Foucault
This adds correct scattering handling by removing the extra light added to opaque pass. Also fix T69062 EEVEE alpha blend and volumetrics
2019-12-16Cleanup: whitespaceCampbell Barton
2019-11-28EEVEE: Viewport RenderpassesJeroen Bakker
This patch will allow the user to select the EEVEE renderpass to be shown in the viewport by default the combined pass will be shown. Limitations: * Viewport rendering stores the result in a `RenderResult`. RenderResult is not aware of the type of data it holds. In many places where RenderResult is used it is assumed that it stores a combined pass and the display+view transform are applied. I will propose to fix this in a future patch. But that is still being designed and discussed. Reviewed By: fclem Differential Revision: https://developer.blender.org/D6319
2019-11-27EEVEE: GLSL RenderpassesJeroen Bakker
Most of the renderpasses in EEVEE used post-processing on the CPU. For final image rendering this is sufficient, but when we want to display the data to the user we don't want to transfer to the CPU to do post processing to then upload it back to the GPU to display the result. This patch moves the renderpass postprocessing to a GLSL shader. This is the first step to do, before we will enable the renderpasses in the viewport. Reviewed By: fclem Differential Revision: https://developer.blender.org/D6206
2019-11-24Cleanup: doxygen commentsCampbell Barton
Also correct some outdated symbol references, add missing 'name' commands.
2019-10-29Fix T69468 EEVEE: Collections Holdout Button in Outliner Is IgnoredClément Foucault
Not the cleanest implementation but the simplest. This doubles the number of default shader variations.
2019-10-29Fix T71050 EEVEE: Light Path Node broken in 2.81Clément Foucault
Also fixes the sampling of hashed shadows.
2019-10-29Fix T71062 EEVEE: Holdout shader is broken in 2.81Clément Foucault
2019-10-17Fix T70811 EEVEE: Alpha clip/hashed cause wrong alpha valuesClément Foucault
Was caused by division not giving a fully opaque alpha value.
2019-10-16Fix T70249 EEVEE: Light bleeding on SSS translucencyClément Foucault
This was caused by 2 things: Shadow map bias and aliasing. It made the expected depth of the shadowmap further than the surface itself in some cases. In normal time this leads to light leaking on normal shadow mapping but here we need to always have the shadowmap depth above the shading point. To fix this, we use a 5 tap inflate filter using the minimum depth of all 5 samples. Using these 5 taps, we can deduce entrance surface derivatives and there orientation towards the light ray. We use these derivatives to bias the depth to avoid wrong depth at depth discontinuity in the shadowmap. This bias can lead to some shadowleaks that are less distracting than the lightleaks it fixes. We also add a small bias to counteract the shadowmap depth precision.
2019-10-09Fix T70640 EEVEE: Alpha hashed material is darker when alpha is not 1.0Clément Foucault
Predivide all radiance components as the alpha effect comes from the hashed transparency (pixel rejection).
2019-09-10EEVEE: Volume: Fix error in fallback integration algoClément Foucault
2019-09-10EEVEE: Volume: Speedup: Use Image load store extensionClément Foucault
Reviewed By: brecht Differential Revision: https://developer.blender.org/D5740