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-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-20Python API: add bl_use_stereo_viewport for RenderEngineBrecht Van Lommel
To indicate if the render engine supports rendering a stereo 3D viewport. This is not currently supported for Cycles. Fixes T62582
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-02-27Cleanup: split off hair cache function for reusabilityBrecht Van Lommel
For when we support sources of hair other than particle systems.
2020-02-25EEVEE: First Buffer Drawn IncorrectlyJeroen Bakker
SSS buffers are lazy initialized when needed. When shaders recompile the SSS buffers could be incorrectly drawn. During the render passes project we tried to fix this, but that resulted in incorrect result of the first sample after a shader was compiled. We revert this change knowing that we know the issue, but haven't found a proper solution for it.
2020-02-22EEVEE: Fix memleak when G.is_break is set from another threadClément Foucault
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-02-11DRW: Color Management improvementClément Foucault
Reviewed By: brecht sergey jbakker Differential Revision: http://developer.blender.org/D6729
2020-01-30EEVEE: Test maximum texture size before render.Clément Foucault
This will catch any non renderable size.
2020-01-17Fix T71154: EEVEE Soft Shadows Viewport RenderingJeroen Bakker
EEVEE Soft shadows were not rendered correctly during viewport rendering. The reason for this is that during viewport rendering the shadow buffers were only update once and not per sample. This resulted that all the samples calculated the same shadow. This fix moves the call to `EEVEE_shadows_update` from cache finished to draw scene. This needs to happen before `EEVEE_lightprobes_refresh`. Reviewed By: fclem Differential Revision: https://developer.blender.org/D6538
2019-12-11Cleanup: spellingCampbell 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-09-05Eevee: Shadow map refactorClément Foucault
Reviewed By: brecht Differential Revision: http://developer.blender.org/D5659
2019-08-14Eevee: Improve Transparent BSDF behaviorClément Foucault
Alpha blended Transparency is now using dual source blending making it fully compatible with cycles Transparent BSDF. Multiply and additive blend mode can be achieved using some nodes and are going to be removed.
2019-07-09Eevee: Fix first sample being accumulated without SSRClément Foucault
We check if the previous iteration (sample) was using a valid double buffer. If it wasn't, we request another iteration. This fix the issue for viewport,viewport render and image render. Related to T65761 Eevee render inconsistency between 3D View, Viewport render, and F12 Render
2019-06-14Fix T64913 Eevee: shader compilation does not reset TAAClément Foucault
This tracks the number of compiling shaders and just reset the TAA if previous number mismatch.
2019-06-06Python API: allow external render engines to use Eevee for LookDev shadingBrecht Van Lommel
This is enabled with bl_use_eevee_viewport = True. It allows external engines to generate an Cycles/Eevee shader node setup to emulate their materials in the realtime viewport, or to leave it to users to do manually. Removed bl_use_exclude_layers and bl_use_shading_nodes that did nothing anymore. This should not break API compatibility, any scripts setting those should continue to work the same as before. Also adds descriptions for some RenderEngine settings.
2019-05-23Eevee: Ignore COW tag when deciding on auto-bakeSergey Sharybin
This is too generic flag, and it might be used by anything, starting from changes in transform ending with changes in ID properties. The check here is to be as specific as possible. If that is not possible the decision must be documented. Related on T63111. Reviewers: brecht Differential Revision: https://developer.blender.org/D4923
2019-05-22Eevee: Make Planar reflections work with the new DRWView systemClément Foucault
Also get rid of clip_block which did the same as clipplanes inside common_view_lib.glsl.
2019-05-22Eevee: Use DRW_view_* API instead of DRW_viewport_matrix_*Clément Foucault
2019-05-17Eevee: Remove the Volumetric Render checkboxClément Foucault
This is to simplify the usage of Volumetrics. Now it automatically detect if there is any Volumetric material in the view and allocate the needed buffer if any.
2019-05-17Eevee: Remove the Subsurface Render checkboxClément Foucault
This is to simplify the usage of SSS. Now it automatically detect if there is any SSS material in the view and allocate the needed buffer if any.
2019-05-16EEVEE: Viewport Rendering TAAJeroen Bakker
EEVEE assumed that the OGL renderer did FSAA, as the FSAA was removed we needed to revalidate this assumption. The temporal sampling only inited the matrices during init phase. As now we need to update the matrices for every sample rendered the code for updating the matrices was isolated in a new function `EEVEE_temporal_sampling_update_matrices`. Reviewed By: fclem Maniphest Tasks: T64646 Differential Revision: https://developer.blender.org/D4871
2019-05-02Workbench,EEVEE: Viewport Render SamplesJeroen Bakker
- Add `render_aa` and `viewport_aa` sampling setting for workbench. 0 samples means no AA, 1 sample uses FXAA and more samples will use TAA. The viewport `gpu_viewport_quality` can still limit viewport anti-aliasing method. - Use TAA when rendering images. (this used to be CPU based FSAA) - Removed `R_OSA` related settings. Reviewers: fclem, brecht Maniphest Tasks: T60847 Differential Revision: https://developer.blender.org/D4773
2019-05-01Eevee: Lookdev: Cleanup implementation & support for Bloom and TAAClément Foucault
Make Lookdev works with bloom and TAA by rendering it before TAA and fixing the motion vectors of the lookdev balls. Rework Lookdev to remove much of its complexity. Use simpler matrices with more understandable setup code.
2019-05-01Eevee: Add support for alpha background in viewportClément Foucault
Viewport now displays alpha checkerboard pattern like Cycles does when film alpha is set to "Transparent". Some small workarounds were necessary for Depth of Field and correct TAA support.
2019-04-17ClangFormat: apply to source, most of internCampbell Barton
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
2019-03-27Cleanup: style, use braces for drawCampbell Barton
2019-03-22EEVEE: Memleak Volumetrics RenderingJeroen Bakker
Volumetric textures were not freed when doing final rendering. Maniphest Tasks: T62356 Differential Revision: https://developer.blender.org/D4573
2019-03-20Fix T60190 Z-fighting with (Culled) BackfaceClément Foucault
Create a separate pass for backface culled objects.
2019-03-20Cleanup: use lowercase for dimensions in function namesCampbell Barton
Most API's already use this convention.
2019-03-20Fix T59719 Bake Indirect Lighting doesn't update env map reflectionClément Foucault
2019-02-27Cleanup: rename lamp -> lightCampbell Barton
2019-02-23Cleanup: quiet undeclared variable warningCampbell Barton
Also move view_ubo into G_draw.
2019-02-18doxygen: add newline after \fileCampbell Barton
While \file doesn't need an argument, it can't have another doxy command after it.
2019-02-06Cleanup: remove redundant doxygen \file argumentCampbell Barton
Move \ingroup onto same line to be more compact and make it clear the file is in the group.
2019-02-01Color management: change view transform for color pickers and display modes.Brecht Van Lommel
* Use simple default view transform for color pickers, as Filmic does not work well for all types of colors. We better handle this with an option and tagging of colors as emissive or albedo like. * For solid/workbench we also no longer use Filmic, as there is not enough contrast and it's not really needed since this is not physically based lighting. * For lookdev always take into account the view transform and look. Other view settings like exposure are only taken into account if scene lighting is used, since these are often dependent on scene light intensity. Fixes T61022, T57649, T59363.
2019-02-01Cleanup: remove redundant, invalid info from headersCampbell Barton
BF-admins agree to remove header information that isn't useful, to reduce noise. - BEGIN/END license blocks Developers should add non license comments as separate comment blocks. No need for separator text. - Contributors This is often invalid, outdated or misleading especially when splitting files. It's more useful to git-blame to find out who has developed the code. See P901 for script to perform these edits.
2019-01-31Cleanup: add trailing commasCampbell Barton
Improve clang-format output.
2019-01-26Cleanup: remove redundant BKE/BLI/BIF headersCampbell Barton
2019-01-26Cleanup: draw manager headersCampbell Barton
2019-01-23Cleanup: use eGPU prefix for GPU enum typesCampbell Barton
2019-01-23Cleanup: add BEGIN/END to GPL headersCampbell Barton
2019-01-22Cleanp: use single global for draw managerCampbell Barton
Add 'G_draw' for all draw manager globals, avoids adding extern to each file. Connection between `ts` and `globals_ubo` wasn't obvious, now called `G_draw.block` & `G_draw.block_ubo`.
2019-01-15Cleanup: rename BASE_FROMDUPLI -> BASE_FROM_DUPLICampbell Barton
Matches `BASE_FROM_SET`.
2018-12-21Fix inconsistent/broken Cycles object visibility for instances.Brecht Van Lommel
Object visibility is now handled by the depsgraph iterator, but this API was incomplete as it made no distinction for visibility of the object itself, particles and generated instances. The depsgraph iterator API now includes information about which part of the object is visible, and this is used by Cycles to replace the old custom logic. Cycles and EEVEE visibility should now be consistent, which unfortunately does means some subtle compatibility breakage for both. Fixes T58956, T58202, T59284. Differential Revision: https://developer.blender.org/D4109
2018-11-16Fix crash when rendering a scene first and then goes to eevee preview modes ↵mano-wii
and cleanup The crash only occurs with Intel 3rd generation GPUs. It occurs because the program needs to be used at least once in the opengl context in which it is created.
2018-11-08Eevee: Add partial support for the Light Path NodeClément Foucault
This makes it possible to tweak indirect lighting in the shader. Only a subset of the outputs is supported and the ray depth has not exactly the same meaning: Is Camera : Supported. Is Shadow : Supported. Is Diffuse : Supported. Is Glossy : Supported. Is Singular : Not supported. Same as Is Glossy. Is Reflection : Not supported. Same as Is Glossy. Is Transmission : Not supported. Same as Is Glossy. Ray Length : Not supported. Defaults to 1.0. Ray Depth : Indicate the current bounce when baking the light cache. Diffuse Depth : Same as Ray Depth but only when baking diffuse light. Glossy Depth : Same as Ray Depth but only when baking specular light. Transparent Depth : Not supported. Defaults to 0. Transmission Depth : Not supported. Same as Glossy Depth. Caveat: Is Glossy does not work with Screen Space Reflections but does work with reflection planes (when used with SSR or not). We have to render the world twice for that to work.
2018-10-28Eevee: Implement jittered soft shadowmapClément Foucault
This new option is located in the shadows options in the render settings. This approach is simple and just randomize the shadow map position (not the lamp itself) and just let the temporal supersampling do the average of all the shadowing. The downside is that is needs quite a large number of samples to give smooth results and individual sample position can remain visible. Enabling this option will make the viewport refresh all shadow maps every redraw so it has a serious performance impact. This approach is not physicaly based at all and will not match cycles. ---- The sampling for point lamps (spheres) is not