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-05-02DRW: Armature: New bone outline shader.Clément Foucault
This fix the issue with the zfighting we were getting at bones edges. Moreover, this enables us to render arbitrarly large outline with varying thickness.
2018-05-02Vertex Paint: Use Linear colors for interpolation.Clément Foucault
This matches Cycles and Eevee's behaviour.
2018-04-25Workbench: Dither background color/gradientJeroen Bakker
2018-04-25Silhouette Overlap OverlayJeroen Bakker
Added Object Overlap Overlay - Added R32UI support to GPU_framebuffer - Added R32U support to draw manager - The overlay mode has a object data pass that will render 'needed' data to specific buffers so we can mix them together via a deferred rendering. In future will also add UV's and other data - Overlap is implemented as an overlay so it could be used on top of the Scene lighted Solid mode (that will be rendered by Eevee. Reviewers: fclem, brecht Reviewed By: fclem Subscribers: sergey Tags: #code_quest Maniphest Tasks: T54726 Differential Revision: https://developer.blender.org/D3174
2018-04-20Eevee: Add Velocity pass.Clément Foucault
This pass create a velocity buffer which is basically a 2D motion vector texture. This is not yet used for rendering but will be usefull for motion blur and temporal reprojection.
2018-04-20Workbench: Added the basics for the OverlayModeJeroen Bakker
Implemented the face orientation overlay for testing. Overlay mode is only drawn when there are overlays to be rendered. The overlay mode is rendered before the object mode.
2018-04-18Workbench: reuse similar materialsJeroen Bakker
Similar materials will reuse the same shadergroup. Currently using a custom hash function that might select too similar colors into the same material. Reintroduced the workbench_materials.c this file will be responsible for material lookup/creation and shader compilation Fixed a GPUShader mem leak
2018-04-18Workbench: Basic Solid StudioJeroen Bakker
Currently uses static lighting. Will become HDRI lighting. Added do_versions to set default drawtype_solid and drawtype_texture to OB_LIGHTING_STUDIO. When View3D space is created drawtype_solid and drawtype_texture are also set to OB_LIGHTING_STUDIO. Current studio lighting uses a dot product to simulate static lighting. Will need to be changed in the future with different lighting models.
2018-04-17Workbench: clean up the viewport shading codeJeroen Bakker
- added the drawtype_solid, drawtype_wireframe, drawtype_texture to View3D - enabled workbench panels for important render engines - merged workbench_materials to solid_flat_mode. All draw modes will get its own fast implementation in the workbench
2018-04-17Workbench: Switching Draw engines based on draw modeJeroen Bakker
2018-04-16Merge branch 'blender2.8' into blender2.8-workbenchJeroen Bakker
2018-04-16Object Mode: Rework outline drawing.Clément Foucault
This changes quite a few things. - Outline is now per object. - No more outline at object intersection (fix hairs problem). - Simplify the code quite a bit. We use a R16UI buffer to save one id per object outline. We convert this id to color when detecting the outline. Added textureGatherOffsets to the code but could not test on current hardware so leaving it commented for now.
2018-04-16Merge branch 'blender2.8' into blender2.8-workbenchJeroen Bakker
2018-04-15Eevee: Cleanup remaining shadow geometry references.Clément Foucault
2018-04-13Workbench: Silhouette shadingJeroen Bakker
Currently it uses the `obj->col`. This needs to be made more intelligent with fe collection overrides.
2018-03-25GPUFramebuffer: Refactor (Part 2)Clément Foucault
This refactor modernise the use of framebuffers. It also touches a lot of files so breaking down changes we have: - GPUTexture: Allow textures to be attached to more than one GPUFrameBuffer. This allows to create and configure more FBO without the need to attach and detach texture at drawing time. - GPUFrameBuffer: The wrapper starts to mimic opengl a bit closer. This allows to configure the framebuffer inside a context other than the one that will be rendering the framebuffer. We do the actual configuration when binding the FBO. We also Keep track of config validity and save drawbuffers state in the FBO. We remove the different bind/unbind functions. These make little sense now that we have separate contexts. - DRWFrameBuffer: We replace DRW_framebuffer functions by GPU_framebuffer ones to avoid another layer of abstraction. We move the DRW convenience functions to GPUFramebuffer instead and even add new ones. The MACRO GPU_framebuffer_ensure_config is pretty much all you need to create and config a GPUFramebuffer. - DRWTexture: Due to the removal of DRWFrameBuffer, we needed to create functions to create textures for thoses framebuffers. Pool textures are now using default texture parameters for the texture type asked. - DRWManager: Make sure no framebuffer object is bound when doing cache filling. - GPUViewport: Add new color_only_fb and depth_only_fb along with FB API usage update. This let draw engines render to color/depth only target and without the need to attach/detach textures. - WM_window: Assert when a framebuffer is bound when changing context. This balance the fact we are not track ogl context inside GPUFramebuffer. - Eevee, Clay, Mode engines: Update to new API. This comes with a lot of code simplification. This also come with some cleanups in some engine codes.
2018-03-22GPUCompositing: Remove entire module.Clément Foucault
This module has no use now with the new DrawManager and DrawEngines and it is using deprecated paths. Moving gpu_shader_fullscreen_vert.glsl to draw/modes/shaders/common_fullscreen_vert.glsl
2018-03-14Clay: Add FXAA.Clément Foucault
I tried to use real multisampling but the main problem is the outline detection that needs to have matching depth samples. So adding FXAA instead. Always on for now, may add a parameter for it later. One thing to note is that we need to copy the final output once again to the main color buffer because we cannot swap the dtxl textures (they can be referenced elsewhere like GPUOffscreen). We could improve upon this and add TAA on top if viewport is still.
2018-03-14Clay: Refactor: Port clay to a deferred pipeline.Clément Foucault
This means that rendering clay with AO only needs 1 geometry pass. Thus greatly improving performance of poly heavy scene. This also fix a self shadow issue in the AO, making low sample count way better. We also do not need to blit the depth anymore since we are doing a fullscreen shading pass. The constant cost of running the a deferred shading pass is negligeable. This include quite a bit of code cleanup inside clay_engine.c. The deferred pipeline is only enabled if at least one material needs it. Multisampling is not supported yet. Small hacks when doing deferred: - We invert the normal before encoding it for precision. - We put the facing direction into the sign of the mat_id. - We dither the normal to fight the low bitdepth artifacts of the normal buffer (which is 8bits per channel to reduce bandwidth usage).
2018-03-10DRW: Put all view-only dependant uniform in a UBO.Clément Foucault
This leads to less lookups to the GWNShaderInterface and less uniform upload. We still keep a legacy path so that Builtin uniforms can still work. We might restrict this path to Builtin shader only in the future.
2018-02-28DRW: Refactor & Split draw_manager.c into multiple files.Clément Foucault
Refactor include: - Removal of DRWInterface. (was useless) - Split DRWCallHeader into a new struct DRWCallState that will be reused in the future. - Use BLI_link_utils for APPEND/PREPEND. - Creation of the new DRWManager struct type. This will enable us to create more than one manager in the future. - Removal of some dead code.
2018-02-01Eevee: Add mist pass support.Clément Foucault
Eevee: Render: Fix crash when not enabling mist pass.
2018-01-30Eevee: Initial Final Render support.Clément Foucault
TAA / multiple samples is not working at the moment.
2018-01-29Deduplicate GLSL frag code in particle drawingGermano
Differential Revision: D2993
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-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-09DRW: Add instance data memory manager.Clément Foucault
This is a special memory manager that keeps memory blocks ready to send as vbo data. Since we loose which memory block was used each DRWShadingGroup we need to redistribute them in the same order/size to avoid to realloc each frame. This is why DRWInstanceDatas are sorted in a list for each different data size.
2018-01-09Curve Edit Mode: Use curve handle theme colorsmano-wii
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-11-16Fix T51210: Draw Manager: Support for Metaball DrawingGermano
Differential Revision: D2914
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-30Draw Manager: re-enable edit-mesh text overlaymano-wii
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-09-30Object Mode : Add probes data outlines and selectabilityClément Foucault
This required some small changes to the data display shaders so that they match the way the object mode renders them. Strangely enough, I had to remove the normal attribute from the display code because it was being not bound as soon as I created another rendering call in object mode. The problem may be deeper but I did not have time for this so I derive the normal from the sphere pos.
2017-09-28Eevee: Probe Grid: Clear Grid buffers with world diffuse coefs.Clément Foucault
This make sure the values displayed by the "show data" sphere are initialized. Also this make the bounce lighting progress more apparent.
2017-09-25Eevee: Implement Temporal Anti Aliasing / Super SamplingClément Foucault
This adds TAA to eevee. The only thing important to note is that we need to keep the unjittered depth buffer so that the other engines are composited correctly.
2017-09-22Object Mode : Add Outline FXAAClément Foucault
Adds a FXAA for smoothing out the extracted outlines. The Post Process Anti Aliasing is only done on the Alpha channel of the outlines. Because of that we need to add bleed the outline color out of the silouhette so the AA'd alpha can blend the right color and not pick black when the alpha is smoothed out of the silhouette. Also because of the AA needs to have clear contrast to work with, I decided to ditch the "bluring" or the occluded outlines. The FXAA adds an overhead of 0.17ms but we gain back 0.22ms * 4 = 0.88ms by removing the blur. The FXAA Implementation is from Corey Richardson (cmr) (D2717). I had to modify it a bit to only filter the alpha channel.
2017-09-10Eevee: Shadows: Filtering improvement.Clément Foucault
- Replace poisson by concentric samples: Less variance. They are sorted by radius then by angle. - Separate filtering into 2 blur. First blur is 3x3 box blur. Second is user dependant. - Group fetches by group of 4.
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-19Eevee: Fix problem with GPU_texture_generate_mipmapClément Foucault
This function was called to recreate the lower mip level of the probe texture. But this is not it's usage and it introduced a stall. This patch add cubemap mipmap level regeneration in eevee_effects.c
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-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-07-27DRW: Revamp the performance debugging tool.Clément Foucault
Old performance debug was doing queries for every frame even if not debugging perf. Also, it did not record when a pass was draw multiple time, leading to incorect measurement. New module also allows to group the timers to limit infos displayed. Also fix the background CPU draw timer.
2017-07-24Eevee: SSR: Add mipmap filtering and bias to reduce noise.Clément Foucault
Also fix the roughness factors.
2017-07-24Eevee: SSR: Add simple raytracing.Clément Foucault
Still imprecise.
2017-07-24Eevee: SSR: Output ssr datas to buffers.Clément Foucault
Output in 2 buffers Normals, Specular Color and roughness. This way we can raytrace in a defered fashion and blend the exact contribution of the specular lobe on top of the opaque pass.
2017-07-03Eevee: Initial implementation of Volumetrics.Clément Foucault
2017-06-28Eevee: Refactor of shading code to be more modular.Clément Foucault
This will enable creating shading models more easily.