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-03-18Fix (harmless) use of uninitialized variables in CyclesBrecht Van Lommel
2020-03-18Volumes: add render settings for volume datablockBrecht Van Lommel
* Space: volume density and step size in object or world space * Step Size: override automatic step size * Clipping: values below this are ignored for tighter volume bounds The last two are Cycles only currently. Ref T73201
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-18Cycles: support rendering new Volume object typeBrecht Van Lommel
Voxels are loaded directly from the OpenVDB grid. Rendering still only supports dense grid, so memory usage is not great for sparse volumes, this is to be addressed in the future. Ref T73201
2020-03-18Cycles: support for different 3D transform per volume gridBrecht Van Lommel
This is not yet fully supported by automatic volume bounds but works fine in most cases that will have mostly matching bounds. Ref T73201
2020-03-17Cleanup: process colorspace conversion with a 1D pixel arrayBrecht Van Lommel
No need to assume it's 2D or 3D.
2020-03-16Fix T74776: Cycles crash with missing image texture after recent changesBrecht Van Lommel
2020-03-12Cleanup: add device_texture for images, distinct from other global memoryBrecht Van Lommel
There was too much image texture specific stuff in device_memory, and too much code duplication between devices.
2020-03-12Fix build error with recent OpenImageIO versionsBrecht Van Lommel
2020-03-12Cleanup: spelling, clang-formatCampbell Barton
2020-03-11Cleanup: refactor image loading to use abstract ImageLoader base classBrecht Van Lommel
Rather than passing around void pointers, various Blender image sources now subclass this. OIIO is also just another type of image loader. Also fixes T67718: Cycles viewport render crash editing point density settings
2020-03-11Cleanup: add ImageHandle to centralize image ownership logicBrecht Van Lommel
2020-03-11Cycles: add internal default volume shader, to be used for new volume objectBrecht Van Lommel
This is mostly straightforward, but required some refactoring to ensure that the default volume material does not always turn on the volume feature for GPU rendering.
2020-03-11Cleanup: stop encoding image data type in slot indexBrecht Van Lommel
This is legacy code from when we had a fixed number of textures.
2020-03-11Fix Cycles link error with debug + asan after RTTI changesBrecht Van Lommel
2020-03-11Cycles: disable RTTI only for OSL files, other libraries like OpenVDB need itBrecht Van Lommel
This is a bit weak since it's not entirely clear where the boundary is, but tested to build and pass tests on all platforms.
2020-03-11Fix Cycles incorrect result when compressing some 8 bit log colorspace imagesBrecht Van Lommel
Don't clamp and do premultiply after color space conversion.
2020-03-06Cleanup: tweak Cycles #includes in preparation for clang-format sortingBrecht Van Lommel
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
2020-03-02Cycles: add Progressive Multi-Jitter sampling patternStefan Werner
This sampling pattern is particularly suited to adaptive sampling, and will be used for that upcoming feature. Based on "Progressive Multi-Jittered Sample Sequences" by Per Christensen, Andrew Kensler and Charlie Kilpatrick. Ref D4686
2020-03-02Shading: Add invert option to Vector Rotate NodeCharlie Jolly
Checkbox to invert rotation angle, suggested by @simonthommes Differential Revision: https://developer.blender.org/D6932
2020-02-28Cycles: Rework tile scheduling for denoisingPatrick Mours
This fixes denoising being delayed until after all rendering has finished. Instead, tile-based denoising is now part of the "RENDER" task again, so that it is all in one task and does not cause issues with dedicated task pools where tasks are serialized. Reviewed By: brecht Differential Revision: https://developer.blender.org/D6940
2020-02-26Cleanup: add ImageKey to avoid longer argument lists and duplicated codeBrecht Van Lommel
2020-02-26Cleanup: spellingCampbell Barton
2020-02-25Cycles: Add option to change which sample to start viewport denoising atPatrick Mours
This patch adds a new user-configurable option to change at which sample viewport denoising should kick in. Setting it to zero retains previous behavior (start immediately), while other values will defer denoising until the particular sample has been reached. Default is now at one, to avoid the weirdness that is AI denoising at small resolutions. Reviewed By: brecht Differential Revision: https://developer.blender.org/D6906
2020-02-25Cycles: move sss and diffuse transmission into diffuse passBrecht Van Lommel
This simplifies compositors setups and will be consistent with Eevee render passes from D6331. There's a continuum between these passes and it's not clear there is much advantage to having them available separately. Differential Revision: https://developer.blender.org/D6848
2020-02-24Fix T74169: Vector Rotate Node - Euler modes not working as intendedCharlie Jolly
Remove additional Euler modes for the time being, not working as intended, will add back if there is a need.
2020-02-19Cleanup: `make format`Dalai Felinto
2020-02-19Fix T73938: Cycles Vertex Color wrong if no layer is specifiedPhilipp Oeser
The node would render black in this case (but should use the 'active_render' layer choosen in the object data properties -- this is now in line to how this is handled for e.g. UVs) This introduces ATTR_STD_VERTEX_COLOR and uses this thoughout, if no particular layer is specified in the node. Maniphest Tasks: T73938 Differential Revision: https://developer.blender.org/D6887
2020-02-18Fix Embree failing on objects with a very high number of motion stepsBrecht Van Lommel
Set the limit to 129 to match Embree. This applies to all devices for consistent render results. Ref T73778
2020-02-17Cycles: Vector Rotate Node using Axis and Angle methodCharlie Jolly
This node provides the ability to rotate a vector around a `center` point using either `Axis Angle` , `Single Axis` or `Euler` methods. Reviewed By: #cycles, brecht Differential Revision: https://developer.blender.org/D3789
2020-02-17Fix artifacts with Cycles viewport denoising when rendering with multiple ↵Patrick Mours
CUDA devices Rendering with multiple CUDA devices but denoising with OptiX caused parts of the image to go missing at the start while the resolution was scaled. This is because the copy operation in `MultiDevice::map_neighbor_tiles` which slices the copy across all devices would slice based on the full resolution and not the scaled one and therefore copy incorrect data between devices. Since this is not the recommended way of using viewport denoising anyway, simply avoid those incorrect copies for now by disabling denoising while the resolution is scaled. Doing both rendering and denoising with OptiX is not affected by this, since it avoids those copies altogether anyway.
2020-02-17Shading: add direction modes and phase offset to wave texture nodeBartosz Moniewski
* Direction mode X, Y and Z to align with axes rather than diagonal or spherical as previously. X is the new default, existing files will use diagonal or spherical for compatibility. * Phase offset to offset the wave along its direction, for purposes like animation and distortion. https://developer.blender.org/D6382
2020-02-15Shading: Extend Vector Math Node with Sin, Cos, Tan and Wrap functionsCharlie Jolly
This adds some extra functions recently added to the float Maths Node. Not all functions have been ported over in this patch. Also: + Tidy up menu + Change node color to match other vector nodes, this helps distinguish vector and float nodes in the tree + Move shared OSL functions to new header node_math.h Reviewed By: brecht Differential Revision: https://developer.blender.org/D6713
2020-02-14Fix sporadic CUDA launch failures with Cycles viewport denoisingPatrick Mours
Sometimes the viewport buffer size is zero for a frame, which caused the denoising task to also try to launch CUDA kernels with a launch size of zero, which in turn failed with a CUDA error. This patch prevents launches from occuring in this case, similar to how it is handled in `copy_to_display_buffer`.
2020-02-12Cleanup: Fix build warnings from OSL shader compilationRay Molenkamp
There were to copies of stdosl.h one from stock OSL and one in the cycles tree augmented with cycles specific closures. moved the cycles ones to stdcycles.h and copied the stock stdosl.h and accompanying headers from the OSL shader folder. for further details see D6812. Reviewed By: brecht Differential Revision: https://developer.blender.org/D6812
2020-02-11Cycles: Add support for denoising in the viewportPatrick Mours
The OptiX denoiser can be a great help when rendering in the viewport, since it is really fast and needs few samples to produce convincing results. This patch therefore adds support for using any Cycles denoiser in the viewport also (but only the OptiX one is selectable because the NLM one is too slow to be usable currently). It also adds support for denoising on a different device than rendering (so one can e.g. render with the CPU but denoise with OptiX). Reviewed By: #cycles, brecht Differential Revision: https://developer.blender.org/D6554
2020-02-07Cleanup: `make format`Dalai Felinto
Remember to run `make format` after cleanups/renames/...
2020-02-07Cleanup: simplify Cycles primitive attribute map storageBrecht Van Lommel
2020-02-07Cleanup: split Cycles Hair and Mesh classes, with Geometry base classBrecht Van Lommel
2020-02-04Merge branch 'blender-v2.82-release'Pablo Dobarro
2020-02-04Fix wrong default value for Lacunarity in Musgrave textureBartosz Moniewski
Lacunarity parameter determines scaling of subsequent octaves in fractal noises. For example, Noise node have this scaling hardcoded to 2.0. Each octave have twice bigger scale than previous one, resulting in finer details. By design fractal noises that generate octaves with same seed should not have Lacunarity set to 1.0, since then it just stacks up identical noises. Differential Revision: https://developer.blender.org/D6742
2020-01-31Merge branch 'blender-v2.82-release'Brecht Van Lommel
2020-01-31Fix issues in Cycles standalone, particularly related to render displayBrecht Van Lommel
Some code was removed to avoid storing the combined pass when viewport rendering other passes. But we can keep this by default, Blender overrides the list of passes entirely.
2020-01-30Cleanup: clang-format, unused variableCampbell Barton
2020-01-27Shading: Add color output to White Noise nodeCharlie Jolly
Hash input values to a color. Differential Revision: https://developer.blender.org/D6672
2020-01-23Merge branch 'blender-v2.82-release'Sergey Sharybin
2020-01-23CMake: Refactor external dependencies handlingSergey Sharybin
This is a more correct fix to the issue Brecht was fixing in D6600. While the fix in that patch worked fine for linking it broke ASAN runtime under some circumstances. For example, `make full debug developer` would compile, but trying to start blender will cause assert failure in ASAN (related on check that ASAN is not running already). Top-level idea: leave it to CMake to keep track of dependency graph. The root of the issue comes to the fact that target like "blender" is configured to use a lot of static libraries coming from Blender sources and to use external static libraries. There is nothing which ensures order between blender's and external libraries. Only order of blender libraries is guaranteed. It was possible that due to a cycle or other circumstances some of blender libraries would have been passed to linker after libraries it uses, causing linker errors. For example, this order will likely fail: libbf_blenfont.a libfreetype6.a libbf_blenfont.a This change makes it so blender libraries are explicitly provided their dependencies to an external libraries, which allows CMake to ensure they are always linked against them. General rule here: if bf_foo depends on an external library it is to be provided to LIBS for bf_foo. For example, if bf_blenkernel depends on opensubdiv then LIBS in blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES. The change is made based on searching for used include folders such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries to LIBS ion that CMakeLists.txt. Transitive dependencies are not simplified by this approach, but I am not aware of any downside of this: CMake should be smart enough to simplify them on its side. And even if not, this shouldn't affect linking time. Benefit of not relying on transitive dependencies is that build system is more robust towards future changes. For example, if bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES and all such code is moved to bf_blenkernel this will not break linking. The not-so-trivial part is change to blender_add_lib (and its version in Cycles). The complexity is caused by libraries being provided as a single list argument which doesn't allow to use different release and debug libraries on Windows. The idea is: - Have every library prefixed as "optimized" or "debug" if separation is needed (non-prefixed libraries will be considered "generic"). - Loop through libraries passed to function and do simple parsing which will look for "optimized" and "debug" words and specify following library to corresponding category. This isn't something particularly great. Alternative would be to use target_link_libraries() directly, which sounds like more code but which is more explicit and allows to have more flexibility and control comparing to wrapper approach. Tested the following configurations on Linux, macOS and Windows: - make full debug developer - make full release developer - make lite debug developer - make lite release developer NOTE: Linux libraries needs to be compiled with D6641 applied, otherwise, depending on configuration, it's possible to run into duplicated zlib symbols error. Differential Revision: https://developer.blender.org/D6642
2020-01-21Cleanup: unused vars, clang-formatCampbell Barton
2020-01-20Fix Cycles not correctly using Background.shader if specifiedBrecht Van Lommel
Based on patch by Alex Fuller. Differential Revision: https://developer.blender.org/D6627