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
2021-09-21Cycles: merge of cycles-x branch, a major update to the rendererBrecht Van Lommel
This includes much improved GPU rendering performance, viewport interactivity, new shadow catcher, revamped sampling settings, subsurface scattering anisotropy, new GPU volume sampling, improved PMJ sampling pattern, and more. Some features have also been removed or changed, breaking backwards compatibility. Including the removal of the OpenCL backend, for which alternatives are under development. Release notes and code docs: https://wiki.blender.org/wiki/Reference/Release_Notes/3.0/Cycles https://wiki.blender.org/wiki/Source/Render/Cycles Credits: * Sergey Sharybin * Brecht Van Lommel * Patrick Mours (OptiX backend) * Christophe Hery (subsurface scattering anisotropy) * William Leeson (PMJ sampling pattern) * Alaska (various fixes and tweaks) * Thomas Dinges (various fixes) For the full commit history, see the cycles-x branch. This squashes together all the changes since intermediate changes would often fail building or tests. Ref T87839, T87837, T87836 Fixes T90734, T89353, T80267, T80267, T77185, T69800
2021-08-04Cycles: More flexible GI Approximation AO distance controlSergey Sharybin
The goal: allow to easily use AO approximation in scenes which combines both small and large scale objects. The idea: use per-object AO distance which will allow to override world settings. Instancer object will "propagate" its AO distance to all its instances unless the instance defines own distance (this allows to modify AO distance in the shot files, without requiring to modify props used in the shots. Available from the new Fats GI Approximation panel in object properties. Differential Revision: https://developer.blender.org/D12112
2021-02-17Cycles: add utility functions for zero float2/float3/float4/transformBrecht Van Lommel
Ref D8237, T78710
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2020-05-25Fix T76925: more Cycles OpenCL compile errors with some drivers on LinuxBrecht Van Lommel
2020-03-18Cycles: change volume step size controls, auto adjust based on voxel sizeBrecht Van Lommel
By default it will now set the step size to the voxel size for smoke and volume objects, and 1/10th the bounding box for procedural volume shaders. New settings are: * Scene render/preview step rate: to globally adjust detail and performance * Material step rate: multiplied with auto detected per-object step size * World step size: distance to steo for world shader Differential Revision: https://developer.blender.org/D1777
2020-03-05Adaptive Sampling for Cycles.Stefan Werner
This feature takes some inspiration from "RenderMan: An Advanced Path Tracing Architecture for Movie Rendering" and "A Hierarchical Automatic Stopping Condition for Monte Carlo Global Illumination" The basic principle is as follows: While samples are being added to a pixel, the adaptive sampler writes half of the samples to a separate buffer. This gives it two separate estimates of the same pixel, and by comparing their difference it estimates convergence. Once convergence drops below a given threshold, the pixel is considered done. When a pixel has not converged yet and needs more samples than the minimum, its immediate neighbors are also set to take more samples. This is done in order to more reliably detect sharp features such as caustics. A 3x3 box filter that is run periodically over the tile buffer is used for that purpose. After a tile has finished rendering, the values of all passes are scaled as if they were rendered with the full number of samples. This way, any code operating on these buffers, for example the denoiser, does not need to be changed for per-pixel sample counts. Reviewed By: brecht, #cycles Differential Revision: https://developer.blender.org/D4686
2019-12-12Cycles: perform clamping per light contribution instead of whole pathLukas Stockner
With upcoming light group passes, for them to sum up correctly to the combined pass the clamping must be more fine grained. This also has the advantage that if one light is particularly noisy, it does not diminish the contribution from other lights which do not need as much clamping. Clamp values on existing scenes will need to be tweaked to get similar results, there is no automatic conversion possible which would give the same results as before. Implemented by Lukas, with tweaks by Brecht. Part of D4837
2019-12-10Cycles: support for custom shader AOVsLukas Stockner
Custom render passes are added in the Shader AOVs panel in the view layer settings, with a name and data type. In shader nodes, an AOV Output node is then used to output either a value or color to the pass. Arbitrary names can be used for these passes, as long as they don't conflict with built-in passes that are enabled. The AOV Output node can be used in both material and world shader nodes. Implemented by Lukas, with tweaks by Brecht. Differential Revision: https://developer.blender.org/D4837
2019-08-26Cycles: inline more functions on the GPUPatrick Mours
This makes little difference for CUDA and OpenCL, but will be helpful for Optix.
2019-08-26Cycles: fixes for building kernel without certain featuresPatrick Mours
Ref D5363
2019-05-01Cleanup: comments (long lines) in cyclesCampbell Barton
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-01-03Fix T54962: Cycles crash using subsurface scattering texture blur.Brecht Van Lommel
2018-06-15Cycles: change Ambient Occlusion shader to output colors.Lukas Stockner
This means the shader can now be used for procedural texturing. New settings on the node are Samples, Inside, Local Only and Distance. Original patch by Lukas with further changes by Brecht. Differential Revision: https://developer.blender.org/D3479
2018-03-19Fix T54317: overlapping volume render bug after recent changes.Brecht Van Lommel
Increasing the samplig dimensions like this is not optimal, I'm looking into some deeper changes to reuse the random number and change the RR probabilities, but this should fix the bug for now.
2018-03-01Cycles: don't count volume boundaries as transparent bounces.Brecht Van Lommel
This is more important now that we will have tigther volume bounds that we hit multiple times. It also avoids some noise due to RR previously affecting these surfaces, which shouldn't have been the case and should eventually be fixed for transparent BSDFs as well. For non-volume scenes I found no performance impact on NVIDIA or AMD. For volume scenes the noise decrease and fixed artifacts are worth the little extra render time, when there is any.
2018-02-22Cycles: better path termination for transparency.Brecht Van Lommel
We now continue transparent paths after diffuse/glossy/transmission/volume bounces are exceeded. This avoids unexpected boundaries in volumes with transparent boundaries. It is also required for MIS to work correctly with transparent surfaces, as we also continue through these in shadow rays. The main visible changes is that volumes will now be lit by the background even at volume bounces 0, same as surfaces. Fixes T53914 and T54103.
2018-02-09Cycles: random walk subsurface scattering.Brecht Van Lommel
It is basically brute force volume scattering within the mesh, but part of the SSS code for faster performance. The main difference with actual volume scattering is that we assume the boundaries are diffuse and that all lighting is coming through this boundary from outside the volume. This gives much more accurate results for thin features and low density. Some challenges remain however: * Significantly more noisy than BSSRDF. Adding Dwivedi sampling may help here, but it's unclear still how much it helps in real world cases. * Due to this being a volumetric method, geometry like eyes or mouth can darken the skin on the outside. We may be able to reduce this effect, or users can compensate for it by reducing the scattering radius in such areas. * Sharp corners are quite bright. This matches actual volume rendering and results in some other renderers, but maybe not so much real world objects. Differential Revision: https://developer.blender.org/D3054
2018-02-08Code refactor: tweaks in SSS code to prepare for coming changes.Brecht Van Lommel
This also fixes a subtle bug in the split kernel branched path SSS, the volume stack update can't be shared between multiple hit points.
2018-02-08Code refactor: remove unnecessary RNG offset in branched path code.Brecht Van Lommel
This is only needed for SSS which bounces to a different shading point.
2018-01-26Code refactor: store RGB BSSRDF in a single closure.Brecht Van Lommel
Previously we stored each color channel in a single closure, which was convenient for sampling a closure and channel together. But this doesn't work so well for algorithms where we want to render multiple color channels together.
2018-01-22Fix T53854: branched path tracing correlation bug with transparency.Brecht Van Lommel
This was broken in d750d18.
2017-11-09Cycles: Replace __MAX_CLOSURE__ build option with runtime integrator variableMai Lavelle
Goal is to reduce OpenCL kernel recompilations. Currently viewport renders are still set to use 64 closures as this seems to be faster and we don't want to cause a performance regression there. Needs to be investigated. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2775
2017-11-08Code refactor: rename subsurface to local traversal, for reuse.Brecht Van Lommel
2017-11-05Cycles: reduce closure memory usage for emission/shadow shader data.Brecht Van Lommel
With a Titan Xp, reduces path trace local memory from 1092MB to 840MB. Benchmark performance was within 1% with both RX 480 and Titan Xp. Original patch was implemented by Sergey. Differential Revision: https://developer.blender.org/D2249
2017-11-05Code refactor: remove emission and background closures, sum directly.Brecht Van Lommel
2017-10-08Code refactor: use DeviceInfo to enable QBVH and decoupled volume shading.Brecht Van Lommel
2017-10-04Code refactor: zero render buffers outside of kernel.Brecht Van Lommel
This was originally done with the first sample in the kernel for better performance, but it doesn't work anymore with atomics. Any benefit was very minor anyway, too small to measure it seems.
2017-10-04Code refactor: remove rng_state buffer and compute hash on the fly.Brecht Van Lommel
A little faster on some benchmark scenes, a little slower on others, seems about performance neutral on average and saves a little memory.
2017-09-28Cycles: reduce subsurface stack memory usage.Brecht Van Lommel
This is done by storing only a subset of PathRadiance, and by storing direct light immediately in the main PathRadiance. Saves about 10% of CUDA stack memory, and simplifies subsurface indirect ray code.
2017-09-20Cycles: slightly improve BSDF sample stratification for path tracing.Brecht Van Lommel
Similar to what we did for area lights previously, this should help preserve stratification when using multiple BSDFs in theory. Improvements are not easily noticeable in practice though, because the number of BSDFs is usually low. Still nice to eliminate one sampling dimension.
2017-09-20Code cleanup: remove hack to avoid seeing transparent objects in noise.Brecht Van Lommel
Previously the Sobol pattern suffered from some correlation issues that made the outline of objects like a smoke domain visible. This helps simplify the code and also makes some other optimizations possible.
2017-09-13Code cleanup: store branch factor in PathState.Brecht Van Lommel
2017-09-13Code cleanup: abstract shadow catcher logic more into accumulation code.Brecht Van Lommel
2017-09-13Code cleanup: deduplicate some branched and split kernel code.Brecht Van Lommel
Benchmarks peformance on GTX 1080 and RX 480 on Linux is the same for bmw27, classroom, pabellon, and about 2% faster on fishy_cat and koro.
2017-09-12Fix rare firefly in volume equiangular sampling when sampling short distance.Brecht Van Lommel
2017-09-05Fix T52433: Volume Absorption color tintSergey Sharybin
Need to exit the volume stack when shadow ray laves the medium. Thanks Brecht for review and help in troubleshooting!
2017-08-24Code cleanup: remove shader context.Brecht Van Lommel
This was needed when we accessed OSL closure memory after shader evaluation, which could get overwritten by another shader evaluation. But all closures are immediatley converted to ShaderClosure now, so no longer needed.
2017-08-19Code cleanup: move rng into path state.Brecht Van Lommel
Also pass by value and don't write back now that it is just a hash for seeding and no longer an LCG state. Together this makes CUDA a tiny bit faster in my tests, but mainly simplifies code.
2017-08-13Code cleanup: make L_transparent part of PathRadiance.Brecht Van Lommel
2017-08-13Code cleanup: make DebugData part of PathRadiance.Brecht Van Lommel
2017-08-12Code cleanup: remove unused Cycles random number code.Brecht Van Lommel
2017-08-12Code cleanup: fix warning and improve terminology.Brecht Van Lommel
2017-08-11Fix T52229: Shadow Catcher artifacts when under transparencySergey Sharybin
Added some extra tirckery to avoid background being tinted dark with transparent surface. Maybe a bit hacky, but seems to work fine.
2017-08-07Fix Cycles shadow catcher objects influencing each other.Brecht Van Lommel
Since all the shadow catchers are already assumed to be in the footage, the shadows they cast on each other are already in the footage too. So don't just let shadow catchers skip self, but all shadow catchers. Another justification is that it should not matter if the shadow catcher is modeled as one object or multiple separate objects, the resulting render should be the same. Differential Revision: https://developer.blender.org/D2763
2017-07-18Fix T52021: Shadow catcher renders wrong when catcher object is behind ↵Sergey Sharybin
transparent object Tweaked the path radiance summing and alpha to accommodate for possible contribution of light by transparent surface bounces happening prior to shadow catcher intersection. This commit will change the way how shadow catcher results looks when was behind semi transparent object, but the old result seemed to be fully wrong: there were big artifacts when alpha-overing the result on some actual footage.
2017-07-18Cycles: Remove meaningless camera ray checkSergey Sharybin
In branched path tracing main loop is always a camera ray, with varying number of transparent bounces.
2017-05-07Cycles: Implement denoising option for reducing noise in the rendered imageLukas Stockner
This commit contains the first part of the new Cycles denoising option, which filters the resulting image using information gathered during rendering to get rid of noise while preserving visual features as well as possible. To use the option, enable it in the render layer options. The default settings fit a wide range of scenes, but the user can tweak individual settings to control the tradeoff between a noise-free image, image details, and calculation time. Note that the denoiser may still change in the future and that some features are not implemented yet. The most important missing feature is animation denoising, which uses information from multiple frames at once to produce a flicker-free and smoother result. These features will be added in the future. Finally, thanks to all the people who supported this project: - Google (through the GSoC) and Theory Studios for sponsoring the development - The authors of the papers I used for implementing the denoiser (more details on them will be included in the technical docs) - The other Cycles devs for feedback on the code, especially Sergey for mentoring the GSoC project and Brecht for the code review! - And of course the users who helped with testing, reported bugs and things that could and/or should work better!
2017-05-02Cycles: Branched path tracing for the split kernelMai Lavelle
This implements branched path tracing for the split kernel. General approach is to store the ray state at a branch point, trace the branched ray as normal, then restore the state as necessary before iterating to the next part of the path. A state machine is used to advance the indirect loop state, which avoids the need to add any new kernels. Each iteration the state machine recreates as much state as possible from the stored ray to keep overall storage down. Its kind of hard to keep all the different integration loops in sync, so this needs lots of testing to make sure everything is working correctly. We should probably start trying to deduplicate the integration loops more now. Nonbranched BMW is ~2% slower, while classroom is ~2% faster, other scenes could use more testing still. Reviewers: sergey, nirved Reviewed By: nirved Subscribers: Blendify, bliblubli Differential Revision: https://developer.blender.org/D2611