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-03-03EEVEE: Deferred: Large refactorClément Foucault
This changes drastically the implementation to leverage arbitrary writes in order to reduce complexity, memory usage and increase speed. Since we are no longer dependent on the framebuffer requirement, we can allocate bigger size texture that fits all views and avoid the extra. Transparency, holdout and emissions are no longer deferred and are now composited using dual source blending. The indirect lighting and raytracing is still not functional but will also gets a large refactor on its own
2022-02-18EEVEE: Fix use_scene_lights optionClément Foucault
2022-02-15Merge branch 'master' into eevee-rewriteClément Foucault
# Conflicts: # source/blender/draw/engines/eevee/eevee_bloom.c # source/blender/draw/engines/eevee/eevee_cryptomatte.c # source/blender/draw/engines/eevee/eevee_data.c # source/blender/draw/engines/eevee/eevee_depth_of_field.c # source/blender/draw/engines/eevee/eevee_effects.c # source/blender/draw/engines/eevee/eevee_engine.c # source/blender/draw/engines/eevee/eevee_lightcache.c # source/blender/draw/engines/eevee/eevee_lightprobes.c # source/blender/draw/engines/eevee/eevee_lights.c # source/blender/draw/engines/eevee/eevee_lookdev.c # source/blender/draw/engines/eevee/eevee_lut_gen.c # source/blender/draw/engines/eevee/eevee_materials.c # source/blender/draw/engines/eevee/eevee_mist.c # source/blender/draw/engines/eevee/eevee_motion_blur.c # source/blender/draw/engines/eevee/eevee_occlusion.c # source/blender/draw/engines/eevee/eevee_private.h # source/blender/draw/engines/eevee/eevee_render.c # source/blender/draw/engines/eevee/eevee_renderpasses.c # source/blender/draw/engines/eevee/eevee_sampling.c # source/blender/draw/engines/eevee/eevee_screen_raytrace.c # source/blender/draw/engines/eevee/eevee_shaders.c # source/blender/draw/engines/eevee/eevee_shadows.c # source/blender/draw/engines/eevee/eevee_shadows_cascade.c # source/blender/draw/engines/eevee/eevee_shadows_cube.c # source/blender/draw/engines/eevee/eevee_subsurface.c # source/blender/draw/engines/eevee/eevee_temporal_sampling.c # source/blender/draw/engines/eevee/eevee_volumes.c # source/blender/gpu/intern/gpu_codegen.c # source/blender/gpu/intern/gpu_material_library.c # source/blender/gpu/opengl/gl_compute.cc # source/blender/makesrna/intern/rna_material.c
2022-02-05Cleanup: EEVEE: Remove unecessary internal C interface.Clément Foucault
2022-01-27EEVEE: Make use of float4x4 instead of float[4][4] and rename vectorsClément Foucault
This follows the type defined in `gpu_shader_shared_utils.h`.
2021-12-04EEVEE: Light: Port light culling to GPUClément Foucault
This removes the light count limit for the forward shaded object. This also provides a more efficient way of computing the culling directly on the GPU. Moreover, this avoids doing multiple lighting passes for high light counts in the deferred pipeline, improving performance.
2021-11-05EEVEE: Raytracing: Add back screen space raytracingClément Foucault
The new pipeline is now cleaner and allows for deferred refraction. The refractions are more accurate but are not denoised for now. More research needs to be done in this area. There is no feedback buffer for now, so reflections of metallic surfaces will appear black. The same restriction on refractive materials still holds true. They will not appear in screen space tracing of other non refractive surfaces. However, refractive surfaces (non-blended) can now reflect themselves and the other surfaces with screen space reflections. Half res tracing is not implemented back yet.
2021-10-24EEVEE: Port back HiZbufferClément Foucault
Pretty much identical. Texture format is now always `GPU_R32F` to remove some workarounds.
2021-10-08EEVEE: Subsurface Scattering: New implementationClément Foucault
This new implementation follows the technique described in "Efficient screen space subsurface scattering Siggraph 2018". Compared to the old implementation it fixes a lot of issues at the cost of it being slower. This fixes: - Light leaking between different objects. - Light leaking between different surfaces with different depths. - SSS radii are now "texturable" per pixel. No SSS surfaces limits. - Noise should be lower. - Precomputation is only done once for all SSS surfaces which lowers the per material storage and precomputation time. Implementation is also simpler as it is only a one pass processing. We differ from the reference presentation by not precomputing the RGB weights per samples. We actually compute them on the fly in order to support varying SSS radii. Notes: - SSS IOR and SSS anisotropy are not supported. - Object level light leak prevention might not work for high number of objects in the scene (> 1024). In this case light leak might occur. Adding or deleting (hidding) objects in the scene might change which objects can leak.
2021-07-01EEVEE: Hair: Add back shaded hair supportClément Foucault
Same implementation as before but it is less intrusive towards the shading Node glsl code. Hair shaders also now supports displacement.
2021-06-05EEVEE: Lookdev: Add back lighting supportClément Foucault
This does not include reference spheres rendering. The approach is a bit different than before. Now we use a `bNodeTree` to control the rendering of lookdev. This generates a `GPUMaterial` that is stored per `Instance`. This way rendering lookdev is just updating the temp light cache using this material as world material. Removing the use of custom shader. This introduces a small hack in order to bind the studiolight hdri after the nodetree glsl parsing. The background display however is still using a custom shader in order to sample the world cubemap with different roughness. The view space option of the studiolight is now faster by using a transform before shading instead of rebaking the lightprobe constantly. This should not have any particular impact on render time.
2021-06-03EEVEE: LightCache: Port bakingClément Foucault
Some things differs from old implementation. - Object visibility is filtered correctly without using a visibility callback (which is to be removed). The implementation is also more high level using less low level tricks. A dedicated LightProbeView is created for each lightprobe cubeface to render using all pipeline (deferred and forward). There is still a few things not working.
2021-05-31EEVEE: LightProbe: Finish loading and rendering of lightcacheClément Foucault
Starting to port lightcache.c to c++.
2021-05-28EEVEE: Lightprobe: Add simple world probe rendering and downsamplingClément Foucault
2021-05-28EEVEE: Add back world nodetree supportClément Foucault
Only for background for now. Support is now not using defines and just use the correct globals and uniforms to keep the same values as before.
2021-05-26EEVEE: Rework multi material handlingClément Foucault
Shading groups are now created by the material_array_get functions instead of passing a reference to be filled later. This avoids having to wait later to maybe create a sub shading group. This also simplifies different geomety type handling.
2021-05-24EEVEE: GPencil: Add basic support for gpencil geometryClément Foucault
This adds support for rendering gpencil objects. There is a lot of features to implement specially the ones requiring per object uniforms.
2021-05-18EEVEE: Material: Add basic material logicClément Foucault
This is a port of the old material grouping. This is a bit more clean as we use containers for each passes and other structures. Nodetree is generated without major error for simple materials but it is not yet used as closures are not outputed.
2021-04-25EEVEE: Use C++ vector typesClément Foucault
2021-04-23EEVEE: Shadow: Add Point light shadows support backClément Foucault
Difference with previous implementation: - Better texture space usage of cone and area light shadow. - Shadows are packed in an atlas. Reducing requirements for future features. - Sampling is simpler because shadow matrix does everything.
2021-04-21EEVEE: Check updates using recalc flag only an object maps.Clément Foucault
This avoids having to reset accumulation if nothing affecting eevee changes.
2021-04-15EEVEE: Split shading passes to eevee_shading.ccClément Foucault
2021-04-15EEVEE: Refactor: Split implementation to .cc fileClément Foucault
This also wrap GPUFrameBuffer & GPUTexture inside eevee:Framebuffer and eevee:Texture to improve managment. Another cleanup was to put all members of `Instance` public to avoid much complexity in accessing the data with modules dependencies. Also split velocity View related data to `class Velocity` and rename previous `Velocity` to `VelocityModule`
2021-04-14EEVEE: Lights: Support infinite light countClément Foucault
Support infinite light count by dividing rendering into chucks of LIGHT_MAX. Forward passes are just rendered again and deferred passes (not implemented yet) will just have to have multiple light evaluation passes.
2021-04-14EEVEE: Lights: Initial Work in progress implementationClément Foucault
Only supports simple point lights for now
2021-04-14EEVEE: Add back object update and view update detection.Clément Foucault
2021-04-12EEVEE: Motion Blur: Add back post process motion blurClément Foucault
This is almost the same thing as old implementation. Differences: - We clamp the motion vectors to their maximum when sampling the velocity buffer. - Velocity rendering (and data manager) is separated from motion blur. This allows outputing the motion vector render pass and in the future use motion vectors to reproject older frames. - Vector render pass support (only if motion blur is disabled, just like cycles). - Velocity tiles are computed in one pass (simpler code, less CPU overhead, less VRAM usage, maybe a bit slower but imperceivable (< 0.3ms)). - Two velocity passes are outputed, one for motion blur fx (applied per shading view) and one for the vector pass. This could be optimized further in the future. - No current support for deformation & hair (to come).
2021-04-09EEVEE: Motion Blur: Add back accumulation logicClément Foucault
Bonus addition, support for shutter curve. Compared to the old implementation, the per time step sync function is lighter and localized. Also it does not require a full engine "reboot" in order to work. Also modifies camera setup to be compatible with future camera motion blur.
2021-04-09EEVEE: Motion Blur: Add back accumulation logicClément Foucault
Bonus addition, support for shutter curve. Compared to the old implementation, the per time step sync function is lighter and localized. Also it does not require a full engine "reboot" in order to work.
2021-04-08EEVEE: Depth Of Field: Add back post process depth of field.Clément Foucault
Pretty much identical to the previous implementation. With the exception of a temporary noise function and some simplification of the CoC computation. This also fixes issues with the Ortho depth of field. Most of the files were modified to comply to new shader codestyle. This also adds partial support of panoramic cameras (bokeh and anamorphic is still buggy).
2021-04-04Cleanup: EEVEE: Use class instead of struct and remove typedefsClément Foucault
2021-04-04EEVEE: Reorganize ShadingView initialisationClément Foucault
This move view resolution handling to the `Camera` class that will in the future clip and trim each view in panoramic projection. There is a new `CameraView` that contains the `DRWView` and subview. This way each `ShadingView` is associated to a unique `CameraView`. ShadingView` & `CameraView` are all allocated & defined at creation time but only the one activated by `Camera` will be rendered.
2021-04-04EEVEE: Film: Add option to use log encodingClément Foucault
This option will make accumulation happen in a pre exposed logarithm color space. This reduces the importance of bright pixels in the pixel filter which will result in less aliasing in theses areas. There is a few cases where one might want to disable this option to match cycles better.
2021-04-03EEVEE: Render: Add back render modeClément Foucault
Render mode is really close to what the viewport render does. Film output is done by resolving the data to the next (double buffered) framebuffer and read back. This also includes a bit of cleaning about naming of init() and sync() functions.
2021-04-02Cleanup: EEVEE: RenamingClément Foucault
- Add eevee_ prefix to shaders to avoid name clashing. - remove plural of eevee_shaders. - rename eevee_shared.hh to eevee_shader_shared.hh.
2021-04-01EEVEE: Film: Filtered accumulation with panoramic projection supportClément Foucault
This commit adds the Film class that handles accumulation of color and non-color data using arbitrary projection and filter size. A weighted accumulation (sum) is done into a data buffer with an additional weight buffer. The sum being per pixel, it allows the input textures that are not aligned with the output pixel grid. Panoramic projection works by rendering a cubemap (6 views) of the scene at the camera position. The Film filter pass then gather the pixels using the correct Panoramic projection ensuring correct Anti-Aliasing. For Non-color data (depth, normals) we only keep the closest value to the target pixel center (simulating a filter size of 0). Color data is accumulated in a log space to improve AntiAliasing output. This is hardcoded for now. Larger filters have poor performance but are very fast to converge. Code Wise: This commit rename some modules to avoid possible confusion and have better meaning. Use namespace instead of prefixes. Added a new eevee_shared.hh file to share structure and enum definitions between GLSL and C++.
2021-03-28EEVEE: New basic drawingClément Foucault
TODO describe overall implementation here