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-06-13Merge branch 'master' into blender2.8Brecht Van Lommel
This includes making Eevee match Cycles behavior of inserting an emission node when linking colors to closures.
2018-06-02Eevee: Add support for hair random property.Clément Foucault
Do note that it does not match cycles implementation. Also we could precompute the hash per strand before rendering but that would suggest it's not per engine specific. If we make the random value internal to blender then it won't be a matter because other renderers will have access to the same value.
2018-05-14Eevee: Hair: Disable SSR for hairs.Clément Foucault
SSR does not work with hair strands. Basically, the rays are too much random to ever converge properly and just result in a soup of self inter reflections. So forcing it to not produce any SSR. Could potentially save some bandwidth by not rendering hair to the SSR buffers.
2018-04-22Cleanup: trailing spacesCampbell Barton
Applied to newly added files in 2.8
2018-04-20Eevee: TAA Reprojection: Initial implementationClément Foucault
This "improve" the viewport experience by reducing the noise from random sampling effects (SSAO, Contact Shadows, SSR) when moving the viewport or during playback. This does not do Anti Aliasing because this would conflict with the outline pass. We could enable AA jittering in "only render" mode though. There are many things to improve but this is a solid basis to build upon.
2018-04-15Eevee: Shadows: Transition to individual face rendering.Clément Foucault
This gets rid of the need of a geom shader and instancing. Both are pretty slow compared to the new method. The only moment the old method could be better is when scene is filled with lots of objects and most of the objects in the shadow map appear on every layer. But even then, we could optimize the culling and minimize the overhead.
2018-03-27Eevee Shaders: Fix "No matching overloaded function"Germano
invert -> inverse
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-10Eevee: Make use of the new view matrix UBO.Clément Foucault
2018-02-05Eevee: Render Fix black normals on blended material in the normal pass.Clément Foucault
2018-02-05Eevee: Codestyle: Indent #ifdefsClément Foucault
2018-02-01Eevee: Simplify/Fix view_vecs calculation.Clément Foucault
Now view_vecs[0][2] ALWAYS contains Near clip plane and view_vecs[1][2] = far - near.
2018-01-31Eevee: Fix indentation and fix output normal of emission shader.Clément Foucault
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-18Eevee: Implement new LTC algorithm for Sphere Lights.Clément Foucault
This is an improvement on the old spining quad method that was giving artifacts when the reflection ray was nearly aligned with the sphere center. This might be a bit heavier but it's worth it.
2018-01-16Eevee: SSR: Optimise Texture fetches and solve noise issue.Clément Foucault
There was some remaining issue caused by neighbor re-use. Randomizing them every _prime_number_ of iterations fixes this.
2018-01-04Eevee: SSR: Fix ssr nor working in ogl render.Clément Foucault
2018-01-04Eevee: Fix issues with alpha blendingClément Foucault
- Hashed Alpha materials were outputing their alpha values even if the final pixel has no blending and thus no transparency. - Opacity was not clamped when using "add closure" nodes.
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-25Eevee: Fix SSS mixing with transparent bsdfClément Foucault
2017-11-25Eevee: Add SSS support in probesClément Foucault
Previously the lighting of SSS material was not present in reflection probe or irradiance grid. This does not compute the SSS correctly but at least output the corresponding irradiance power to the correct output.
2017-11-25Eevee: SSS: Add separated Albedo option.Clément Foucault
This option prevent from automatically blurring the albedo color applied to the SSS. While this is great for preserving details it can bleed more light onto the nearby objects since the blurring will be done on pure "white" irradiance. This issue is to be tackled in a separate commit.
2017-11-22Eevee : SSS : Add Translucency support.Clément Foucault
This adds the possibility to simulate things like red ears with strong backlight or material with high scattering distances. To enable it you need to turn on the "Subsurface Translucency" option in the "Options" tab of the Material Panel (and of course to have "regular" SSS enabled in both render settings and material options). Since the effect is adding another overhead I prefer to make it optional. But this is open to discussion. Be aware that the effect only works for direct lights (so no indirect/world lighting) that have shadowmaps, and is affected by the "softness" of the shadowmap and resolution. Technical notes: This is inspired by http://www.iryoku.com/translucency/ but goes a bit beyond that. We do not use a sum of gaussian to apply in regards to the object thickness but we precompute a 1D kernel texture. This texture stores the light transmited to a point at the back of an infinite slab of material of variying thickness. We make the assumption that the slab is perpendicular to the light so that no fresnel or diffusion term is taken into account. The light is considered constant. If the setup is similar to the one assume during the profile baking, the realtime render matches cycles reference. Due to these assumptions the computed transmitted light is in most cases too bright for curvy objects. Finally we jitter the shadow map sample per pixel so we can simulate dispersion inside the medium. Radius of the dispersion is in world space and derived by from the "soft" shadowmap parameter. Idea for this come from this presentation http://www.iryoku.com/stare-into-the-future (slide 164).
2017-11-14Eevee: SSS: Fix SSS with Add Shader node.Clément Foucault
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-14GPUMaterial : Add sss_data to Closure struct.Clément Foucault
2017-10-27Eevee: Volumetrics: Add Volume object support.Clément Foucault
This is quite basic as it only support boundbing boxes. But the material can refine the volume shape in anyway the user like. To overcome this limitation, a voxelisation should be done on the mesh (generating a SDF maybe?) and tested against every volumetric cell.
2017-10-27Eevee: Volumetrics: Add volumetric support to alpha blended meshes.Clément Foucault
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-10-07Eevee: Shadows: Add Contact ShadowsClément Foucault
This add the possibility to add screen space raytraced shadows to fix light leaking cause by shadows maps. Theses inherit of the same artifacts as other screenspace methods.
2017-09-26Eevee : Fix regression : Refraction not workingClément Foucault
2017-09-12Eevee: Fix T52480: Can't reproduce Metallic transparency with Principled + ↵Clément Foucault
Mix Shader You can now use a transparent shader as a completly transparent bsdf. And use whatever alpha mask in a mix shader between a transparent bsdf and another bsdf.
2017-09-10Eevee: Shadows: Add cubemap filtering and adaptive sample count.Clément Foucault
Filter size is constant in world space and not dependant of shadow resolution. The filter size is limited to the number of precomputed samples.
2017-09-10Eevee: Add Cascaded Shadow Map options.Clément Foucault
2017-09-10Eevee: Add Cascaded Shadow Map support with filtering.Clément Foucault
This brings some data structure changes. Shared shadow data are stored in ShadowData (in glsl) (aka EEVEE_Shadow in C). This structure contains the array indices of the first shadow element of this shadow "object". It also contains how many shadow to evaluate (to be used for Multiple shadow maps). The filtering is noisy and needs improvement.
2017-09-10Eevee: Expose Shadow filter size.Clément Foucault
2017-09-10Eevee: Add Variance Shadow MappingClément Foucault
This is an alternative to ESM. It does not suffer the same bleeding artifacts.
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-18Eevee: Add some utils functionsClément Foucault
2017-08-13Eevee: Optimize and improve GTAO Horizon searchClément Foucault
This fix a bug when occluder are on the edge of the screen and occludes more than they should. Grouped the texture fetches together and clamp the ray at the border of the screen. Also add a few util functions.
2017-08-11Eevee: Re: Fix NaNClément Foucault
This should be faster and apparently more stable.
2017-08-10Eevee: Fix multiply blend mode.Clément Foucault
2017-08-10Eevee: Refraction: Fix border artifacts.Clément Foucault
2017-08-10Eevee: SSR: Refine Raytrace Algorithm.Clément Foucault
We track the previous ray position offseted by the thickness. If the sampled depth is between this value and the current ray position then we have a hit. This fixes rays that are almost colinear with the view vector. Thickness is now only important for rays that are comming back to the camera. As a consequence, this simplify a lot of things. Also include some refactor.
2017-08-10Eevee: Correct Mipmap texel alignment.Clément Foucault
Since we are working with non power of 2 textures, the mipmap level UV does not line up perfectly. This resulted in skewed filtering and bad sampling of the min/max depth buffer.
2017-08-10Eevee: Add Refraction via probes.Clément Foucault
2017-08-10Eevee: Small code codestyle and fixes.Clément Foucault
Rename get_specular_dominant_dir to get_specular_reflection_dominant_dir. Add Zero length N check everywhere.
2017-07-31Eevee: SSR: Rewrote the raytracing algorithm.Clément Foucault
It now uses a quality slider instead of stride. Lower quality takes larger strides between samples and use lower mips when tracing rough rays. Now raytracing is done entierly in homogeneous coordinate space. This run much faster. Should be fairly optimized. We are still Bandwidth bound. Add a line-line intersection refine. Add a ray jitter between the multiple ray per pixel to fill some undersampling in mirror reflections. The tracing now stops if it goes behind an object. This needs some work to allow it to continue even if behind objects.
2017-07-27Eevee: Planar Reflection: only support mirror reflection if not using SSR.Clément Foucault
2017-07-25Eevee: SSR: Add support for planar probes.Clément Foucault
This add the possibility to use planar probe informations to create SSR. This has 2 advantages: - Tracing is less expensive since the hit is found much quicker. - We have much less artifact due to missing information. There is still area for improvement.