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
2022-07-15Fix: Move DRW_shgroup_add_material_resources(grp, mat) to after the ↵Martijn Versteegh
null-check for grp. Reviewed By: fclem Maniphest Tasks: T99646 Differential Revision: https://developer.blender.org/D15436
2022-06-29Fix T98697: EEVEE: Regression: Missing custom property from volumetricsClément Foucault
The resource binding were missing from the shading group (`shgroup->uniform_attrs`), leading to no custom property UBO creation (`drw_uniform_attrs_pool_update`) when issuing the drawcall, resulting in a missing UBO bind. The fix make sure to no duplicate the bindings by creating a simple shader bind instead of a `GPUMaterial` bind. Candidate for 3.2.1 corrective release.
2022-04-19GPU: Replace `GPUMaterialVolumeGrid` by `GPUMaterialAttribute`Clément Foucault
This is to make the codegen and shading nodes object type agnostic. This is essential for flexibility of the engine to use the nodetree as it see fits. The essential volume attributes struct properties are moved to the `GPUMaterialAttribute` which see its final input name set on creation. The binding process is centralized into `draw_volume.cc` to avoid duplicating the code between multiple engines. It mimics the hair attributes process. Volume object grid transforms and other per object uniforms are packed into one UBO per object. The grid transform is now based on object which simplify the matrix preparations. This also gets rid of the double transforms and use object info orco factors for volume objects. Tagging @brecht because he did the initial implementation of Volume Grids.
2022-04-19DRW: Centralize smoke domain texture managementClément Foucault
This code was duplicated in multiple engines. Now it is the draw manager responsability to manage the throwaway fluid textures.
2022-04-14GPU: Make nodetree GLSL Codegen render engine agnosticClément Foucault
This commit removes all EEVEE specific code from the `gpu_shader_material*.glsl` files. It defines a clear interface to evaluate the closure nodes leaving more flexibility to the render engine. Some of the long standing workaround are fixed: - bump mapping support is no longer duplicating a lot of node and is instead compiled into a function call. - bump rewiring to Normal socket is no longer needed as we now use a global `g_data.N` for that. Closure sampling with upstread weight eval is now supported if the engine needs it. This also makes all the material GLSL sources use `GPUSource` for better debugging experience. The `GPUFunction` parsing now happens in `GPUSource` creation. The whole `GPUCodegen` now uses the `ShaderCreateInfo` and is object type agnostic. Is has also been rewritten in C++. This patch changes a view behavior for EEVEE: - Mix shader node factor imput is now clamped. - Tangent Vector displacement behavior is now matching cycles. - The chosen BSDF used for SSR might change. - Hair shading may have very small changes on very large hairs when using hair polygon stripes. - ShaderToRGB node will remove any SSR and SSS form a shader. - SSS radius input now is no longer a scaling factor but defines an average radius. The SSS kernel "shape" (radii) are still defined by the socket default values. Appart from the listed changes no other regressions are expected.
2022-04-01Cleanup: Use const for bounding boxes where possibleHans Goudey
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2021-07-30Cleanup: clang-format (re-run after v12 version bump)Campbell Barton
2021-07-03Cleanup: consistent use of tags: NOTE/TODO/FIXME/XXXCampbell Barton
Also use doxy style function reference `#` prefix chars when referencing identifiers.
2021-06-26Cleanup: full sentences in comments, improve comment formattingCampbell Barton
2021-05-19Materials: support changing materials during evaluationJacques Lucke
This commit allows that the evaluated geometry of an object has different materials from the original geometry. This is needed for geometry nodes. The main thing that changes for render engines and exporters is that the number of material slots on an object and its geometry might not match anymore. For original data, the slot counts are still equal, but not for evaluated data. Accessing material slots though rna stays the same. The behavior adapts automatically depending on whether the object is evaluated. When accessing materials of an object through `BKE_object_material_*` one has to use a new api for evaluated objects: `BKE_object_material_get_eval` and `BKE_object_material_count_eval`. In the future, the different behavior might be hidden behind a more general C api, but that would require quite a few more changes. The ground truth for the number of materials is the number of materials on the geometry now. This is important in the current design, because Eevee needs to know the number of materials just based on the mesh in `mesh_render_mat_len_get` and similar places. In a few places I had to add a special case for mesh edit mode to get it to work properly. This is unfortunate, but I don't see a way around that for now. Differential Revision: https://developer.blender.org/D11236
2021-05-07Cleanup: make format (clang-format)Dalai Felinto
2021-05-05Fix T86037 EEVEE: SSR option changes render passes resultClément Foucault
This was caused by the SSR option resetting the accumulation. But the render passes were only cleared in the init phase. This means that when SSR was resetting the taa_render_sample the actual renderpasses would still contains 1 sample. This means the renderpasses were always divided by the wrong number of samples. The fix is to clear just before accumulation if the sample is 1. The fact that it works for motion blur is kind of a blessing. This is because we check stl->effects->ssr_was_valid_double_buffer before resetting the sampling. So this only happens on the first motion step and does not affect the rest of the rendering. Reviewed by: jbakker Differential Revision: https://developer.blender.org/D11033
2021-04-11Cleanup: clang-formatCampbell Barton
2021-04-08Cleanup: Use const arguments for volume codeHans Goudey
The problem was that you could getting write access to a grid from a `const Volume *` without breaking const correctness. I encountered this when working on support for volumes in the bounding box node. For geometry nodes there is an important distinction between getting data "for read" and "for write", with the former returning a `const` version of the data. Also, for volumes it was necessary to cast away const, since all of the relevant functions in `volume.cc` didn't have const versions. This patch adds `const` in these places, distinguising between "for read" and "for write" versions of functions where necessary. The downside is that loading and unloading in the global volume cache needs const write-access to some member variables. I see that as an inherent problem that comes up with caching that never has a beautiful solution anyway. Some of the const-ness could probably be propogated futher in EEVEE code, but I'll leave that out, since there is another level of caching. Differential Revision: https://developer.blender.org/D10916
2021-03-19EEVEE: Volumetrics: Add back support for light clampClément Foucault
The new clamping works by modifying the lamp internal radius which then soften the light contribution. However this does remove more light compare to the old solution. This is because the clamp now affects the light over a much larger distance since it is smoother. Old scene needs manual tweaking.
2021-03-19EEVEE: Volumetrics: Add support for soft volumetric shadowsClément Foucault
Soft surface shadows were already supported but now we support soft shadows of the volume themselves. This is only enabled if the light casts shadow and the scene soft shadows toggle is enabled.
2021-02-20Cleanup: doxygen sectionsCampbell Barton
2020-11-06Cleanup: use STR_ELEM macroCampbell Barton
2020-10-27Cleanup: use over-line for doxy commentsCampbell Barton
Follow our code style for doxygen sections.
2020-10-11Cleanup: make formatAaron Carlisle
2020-10-07Fix T81254: Incorrect calculation of EEVEE Transmittance VolumetricsJeroen Bakker
Regular rendering uses a custom blend mode, but render passes renders to 2 separate textures. This wasn't configured correctly inside the fragment shaders. This patch adds a switch to configure the fragment shader with the correct attachments. Backport to Blender 2.83. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D9038
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-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-07GPU: Rename gpu_extensions to gpu_capabilitiesClément Foucault
This makes more sense as this module has more to it than just GL extensions.
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-09-03Fix T79718: Eevee OpenVDB render error when frames miss part of the gridsBrecht Van Lommel
Improved fix that handles the distinct cases of missing grids and zero size grids.
2020-09-03Fix T80332: principle volume shader not working for world in EeveeBrecht Van Lommel
The handling of missing volume grids for the principled volume shader was incomplete, different inputs need different default values.
2020-09-01EEVEE: Volumetric: Fix missing UBOClément Foucault
This is undefined behavior on certain system.
2020-08-28Fix T79920: Fix Compiling EEVEE Volume ShadersJeroen Bakker
There were some missing UBO bindings, what asserted in debug mode. This patch fixes this by binding the missing UBO's Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D8742
2020-08-12Merge branch 'blender-v2.90-release'Brecht Van Lommel
2020-08-12Fix T79718: Eevee OpenVDB render error when frames miss part of the gridsBrecht Van Lommel
2020-08-07Cleanup: declare arrays arrays where possibleCampbell 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-30Cleanup: GPU: Remove GPU_draw.h and move fluid gpu function to DRWClément Foucault
2020-07-29Workbench/Eeevee: Minor refactor in smoke draw functionSebastián Barschkis
More concise this way.
2020-07-03Cleanup: Fluid renaming from old 'manta' naming to new 'fluid' namingSebastián Barschkis
Changed variable names from mmd, mds, mfs, and mes to fmd, fds, ffs, and fes. The author of this commits lights a candle for all the merge conflicts this will cause.
2020-06-24Fix T78215 EEVEE: incorrect Render Passes results when using motion blurClément Foucault
This was caused by a missing DRWPass initialization. Now we create the passes for every timestep but avoid clearing the buffer after the first sample.
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-06-02GPU: Texture: Replace internal sampler state by explicit state objectClément Foucault
This makes it easier to track as well as allowing us to sample the same texture with different sampling parameters (which should fix the related T73942 in the long run). Reviewed By: brecht Differential Revision: https://developer.blender.org/D7831
2020-05-20Merge branch 'blender-v2.83-release'Clément Foucault
# Conflicts: # source/blender/draw/engines/eevee/eevee_volumes.c
2020-05-20Fix T75197: Eevee does not render instanced smokeJacques Lucke
This check was introduced in rBc8005703f298, but does not seem necessary anymore. Reviewers: fclem, sebbas, brecht Differential Revision: https://developer.blender.org/D7799
2020-05-08Fix T76498: Refactoring - Rename BKE modifiers funtionsAntonio Vazquez
2020-04-03Code Quality: Replace for loops with LISTBASE_FOREACHDalai Felinto
Note this only changes cases where the variable was declared inside the for loop. To handle it outside as well is a different challenge. Differential Revision: https://developer.blender.org/D7320
2020-04-03Cleanup: Including "BLI_listbase.h" for LISTBASE_FOREACH macroDalai Felinto
These headers are not needed right away, but will be in the upcoming commit.
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-19Cleanup: spellingCampbell Barton
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-14Fix T73921: Eevee volume render test memory leak in MantaflowSebastián Barschkis
Fixed memory leak that showed up after the original issue (crash) had been fixed in 93ac4709ebe8. The fix ensures that light cache bakes free up GPU smoke textures and the smoke domain list correctly. This commit also removes the workaround (f3a33a92987f) that disabled light cache bakes for fluid objects.