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
path: root/intern
AgeCommit message (Collapse)Author
2021-10-18Cycles: optimize volume stack copying for shadow catcher/compactionBrecht Van Lommel
Only copy the number of items used instead of the max items. Ref D12889
2021-10-18Cleanup: fix outdated comment and use of atomicsBrecht Van Lommel
This is only used by a single device, not need for thread safety.
2021-10-18Cleanup: consistently use uint32_t for path flagBrecht Van Lommel
2021-10-18Cycles: replace integrator state argument macrosBrecht Van Lommel
* Rename struct KernelGlobals to struct KernelGlobalsCPU * Add KernelGlobals, IntegratorState and ConstIntegratorState typedefs that every device can define in its own way. * Remove INTEGRATOR_STATE_ARGS and INTEGRATOR_STATE_PASS macros and replace with these new typedefs. * Add explicit state argument to INTEGRATOR_STATE and similar macros In preparation for decoupling main and shadow paths. Differential Revision: https://developer.blender.org/D12888
2021-10-18Cleanup: fix compiler warningBrecht Van Lommel
2021-10-18Cleanup: spelling in commentsCampbell Barton
2021-10-15Fix T92032: Cycles panoramic cameras do not support shiftBrecht Van Lommel
2021-10-15Cycles: Voronoi noise, fix uninitialised variableCharlie Jolly
Caused a debug crash in Windows MSVS. Reviewed By: brecht Differential Revision: https://developer.blender.org/D12873
2021-10-15Cleanup: refactor BVH2 shadow intersection for upcoming changesBrecht Van Lommel
2021-10-15Cleanup: refactor OptiX shadow intersection for upcoming changesBrecht Van Lommel
2021-10-15Cleanup: don't copy constant memory to GPU multiple times for displacementBrecht Van Lommel
2021-10-15Cleanup: add utility functions for packing integersBrecht Van Lommel
2021-10-15Cleanup: refactor to make number of channels for shader evaluation variableBrecht Van Lommel
2021-10-15Fix Cycles Python error with pinned materials in properties editorBrecht Van Lommel
2021-10-15Fix T92128: Cycles CUDA wrong hair attributes, after recent changesBrecht Van Lommel
2021-10-14Cycles: Kernel address space changes for MSLMichael Jones
This is the first of a sequence of changes to support compiling Cycles kernels as MSL (Metal Shading Language) in preparation for a Metal GPU device implementation. MSL requires that all pointer types be declared with explicit address space attributes (device, thread, etc...). There is already precedent for this with Cycles' address space macros (ccl_global, ccl_private, etc...), therefore the first step of MSL-enablement is to apply these consistently. Line-for-line this represents the largest change required to enable MSL. Applying this change first will simplify future patches as well as offering the emergent benefit of enhanced descriptiveness. The vast majority of deltas in this patch fall into one of two cases: - Ensuring ccl_private is specified for thread-local pointer types - Ensuring ccl_global is specified for device-wide pointer types Additionally, the ccl_addr_space qualifier can be removed. Prior to Cycles X, ccl_addr_space was used as a context-dependent address space qualifier, but now it is either redundant (e.g. in struct typedefs), or can be replaced by ccl_global in the case of pointer types. Associated function variants (e.g. lcg_step_float_addrspace) are also redundant. In cases where address space qualifiers are chained with "const", this patch places the address space qualifier first. The rationale for this is that the choice of address space is likely to have the greater impact on runtime performance and overall architecture. The final part of this patch is the addition of a metal/compat.h header. This is partially complete and will be extended in future patches, paving the way for the full Metal implementation. Ref T92212 Reviewed By: brecht Maniphest Tasks: T92212 Differential Revision: https://developer.blender.org/D12864
2021-10-14Fix shadow catcher behind transparent object on GPUSergey Sharybin
The assumption about absent shadow path was wrong. The rest of the changes are to ensure shadow paths are finished prior to the split, so that they write to the proper passes. The issue was caught by running regression tests on OptiX. Differential Revision: https://developer.blender.org/D12857
2021-10-13Fix Cycles viewport after session resetSergey Sharybin
Happens i.e. when changing compute device. A more proper follow-up to the on-demand display driver creation change.
2021-10-13Fix Cycles assert in viewport after recent changeSergey Sharybin
Create display early on, so that ready_to_reset() passes assert test for use for display actually configured.
2021-10-13Fix Cycles backing issues when using multiple devicesSergey Sharybin
The pixel accessor was not aware of possible offset in the pixel padding causing some slices of the result not being properly padded.
2021-10-13Fix possible integer overflow in Cycles bakingSergey Sharybin
Ensure math happens on size_t type instead of int followed by a cast to the size_t.
2021-10-13Fix: Stops assert when baking in debug mode.William Leeson
When baking in a debug build running gdb it kept asserting because a GL context was being created outside the main thread. To fix this the patch only creates the GL context is only created for rendering (when it is actually used). Reviewed By: sergey Differential Revision: https://developer.blender.org/D12767
2021-10-12Revert "GHOST: Unify behavior of offscreen context creation"Clément Foucault
Commited by mistake This reverts commit 6535779c92b90035870047f178cf3eff95f0bdf0.
2021-10-12GHOST: Unify behavior of offscreen context creationClément Foucault
This makes sure the previously bound context is restored after creating a new context. This follows what is already happening on windows. All system backend are patched. This also removes the goto and some code duplication. Differential Revision: https://developer.blender.org/D12455
2021-10-12Fix missing Cycles volume stack re-allocationSergey Sharybin
Need to check allocation size, as the features do not change with volume stack depth detection.
2021-10-12XR Controller Support Step 4: Controller DrawingPeter Kim
Addresses T77127 (Controller Drawing). Adds VR controller visualization and custom drawing via draw handlers. Add-ons can draw to the XR surface (headset display) and mirror window by adding a View3D draw handler of region type 'XR' and draw type 'POST_VIEW'. Controller drawing and custom overlays can be toggled individually as XR session options, which will be added in a future update to the VR Scene Inspection add-on. For the actual drawing, the OpenXR XR_MSFT_controller_model extension is used to load a glTF model provided by the XR runtime. The model's vertex data is then used to create a GPUBatch in the XR session state. Finally, this batch is drawn via the XR surface draw handler mentioned above. For runtimes that do not support the controller model extension, a a simple fallback shape (sphere) is drawn instead. Reviewed By: Severin, fclem Differential Revision: https://developer.blender.org/D10948
2021-10-12Cleanup: spelling in commentsCampbell Barton
2021-10-12GHOST: Add option to request (user) cache folder.Jeroen Bakker
Introduces `BKE_appdir_folder_caches` to get the folder that can be used to store caches. On different OS's different folders are used. - Linux: `~/.cache/blender/`. - MacOS: `Library/Caches/Blender/`. - Windows: `(%USERPROFILE%\AppData\Local)\Blender Foundation\Blender\Cache\`. Reviewed By: Severin Differential Revision: https://developer.blender.org/D12822
2021-10-11Fix T92056: empty sampling pattern in Cycles when opening some existing filesBrecht Van Lommel
2021-10-11Cycles: improve SSS Fresnel and retro-reflection in Principled BSDFBrecht Van Lommel
For details see the "Extending the Disney BRDF to a BSDF with Integrated Subsurface Scattering" paper. We split the diffuse BSDF into a lambertian and retro-reflection component. The retro-reflection component is always handled as a BSDF, while the lambertian component can be replaced by a BSSRDF. For the BSSRDF case, we compute Fresnel separately at the entry and exit points, which may have different normals. As the scattering radius decreases this converges to the BSDF case. A downside is that this increases noise for subsurface scattering in the Principled BSDF, due to some samples going to the retro-reflection component. However the previous logic (also in 2.93) was simple wrong, using a non-sensical view direction vector at the exit point. We use an importance sampling weight estimate for the retro-reflection to try to better balance samples between the BSDF and BSSRDF. Differential Revision: https://developer.blender.org/D12801
2021-10-11Cycles: restore Christensen-Burley SSSBrecht Van Lommel
There is not enough time before the release to improve Random Walk to handle all cases this was used for, so restore it for now. Since there is no more path splitting in cycles-x, this can increase noise in non-flat areas for the sample number of samples, though fewer rays will be traced also. This is fundamentally a trade-off we made in the new design and why Random Walk is a better fit. However the importance resampling we do now does help to reduce noise. Differential Revision: https://developer.blender.org/D12800
2021-10-11Fix active pixels overlay for Cycles viewportSergey Sharybin
It got missed in some of previous development. Can not see a reason why the line needed to be removed, maybe just some accident.
2021-10-11Cleanup: Spelling in commentSergey Sharybin
2021-10-11Cycles: Improve volume stack size calculationSergey Sharybin
Only count volume objects after shader optimization. Allows to discard objects which don't have effective volume BSDF connected to the shader output (i.e. constant folded, or non-volume BSDF used by mistake). Solves memory regression reported in T92014. There is still possibility to improve memory even further for cases when there are a lot of non-intersecting volume objects, but that requires a deeper refactor of update process. Will happen as a followup development. Differential Revision: https://developer.blender.org/D12797
2021-10-11Cycles: Introduce scene host_update functionSergey Sharybin
The longer-term goal is to separate host-only scene update from device update: make it possible to make kernel features depend on actual scene state and flags. This change makes it so shaders are compiled before kernel load, making checks like "has_volume" available at the kernel features calculation state. No functional changes are expected at this point. Differential Revision: https://developer.blender.org/D12795
2021-10-08Fix T90666: Toggling motion blur while persistent data is enabled results in ↵Patrick Mours
artifacts Enabling or disabling motion blur requires rebuilding the BVH of affected geometry and uploading modified vertices to the device (since without motion blur the transform is applied to the vertex positions, whereas with motion blur this is done during traversal). Previously neither was happening when persistent data was enabled, since the relevant node sockets were not tagged as modified after toggling motion blur. The change to blender_object.cpp makes it so `geom->set_use_motion_blur()` is always called (regardless of motion blur being toggled on or off), which will tag the geometry as modified if that value changed and ensures the BVH is updated. The change to hair.cpp/mesh.cpp was necessary since after motion blur is disabled, the transform is applied to the vertex positions of a mesh, but those changes were not uploaded to the device. This is fixed now that they are tagged as modified. Maniphest Tasks: T90666 Differential Revision: https://developer.blender.org/D12781
2021-10-08Fix T91999: wrong Cycles updates with mesh deformation, after recent changesBrecht Van Lommel
2021-10-08Fix T91997: Cycles glass + SSS not rendering correctlyBrecht Van Lommel
2021-10-08Fix Cycles speed regression after dynamic volume stack changeSergey Sharybin
Only copy required part of volume stack instead of entire stack. Solves time regression introduced by D12759 and avoids need in implementing volume stack calculation to exactly match what the path tracing will do (as well as potentially makes scenes with a lot of volumes ans a tiny bit of deeply nested ones render faster). Still need to look into memory aspect of the regression, but that is for separate patch. Ref T92014 Maniphest Tasks: T92014 Differential Revision: https://developer.blender.org/D12790
2021-10-08Cleanup: Explicit specifier for single argument constructorSergey Sharybin
2021-10-08Cleanup: Else after return in CyclesSergey Sharybin
2021-10-08Cleanup: spellingCampbell Barton
2021-10-07Fix Cycles random walk SSS differences between CPU and GPUBrecht Van Lommel
The Embree logic did not match the GPU.
2021-10-07Cleanup: remove unnecessary data from LocalIntersectionBrecht Van Lommel
2021-10-07Fix wrong tile size calculated in CyclesSergey Sharybin
Was causing extra overscan pixels, and was confusing multiple workers check after fix T91994.
2021-10-07Fix Cycles long start on scene without volumesSergey Sharybin
The state template iteration had difficult time dealing with 0-sized arrays, causing iteration for until integer overflows.
2021-10-07Fix T91994: Cycles crash when rendering on multiple devicesSergey Sharybin
The overscan change from D12599 lacked proper handling of window when slicing buffer for multiple devices.
2021-10-06Cycles: fully decouple triangle and curve primitive storage from BVH2Brecht Van Lommel
Previously the storage here was optimized to avoid indirections in BVH2 traversal. This helps improve performance a bit, but makes performance and memory usage of Embree and OptiX BVHs a bit worse also. It also adds code complexity in other parts of the code. Now decouple triangle and curve primitive storage from BVH2. * Reduced peak memory usage on all devices * Bit better performance for OptiX and Embree * Bit worse performance for CUDA * Simplified code: ** Intersection.prim/object now matches ShaderData.prim/object ** No more offset manipulation for mesh displacement before a BVH is built ** Remove primitive packing code and flags for Embree and OptiX ** Curve segments are now stored in a KernelCurve struct * Also happens to fix a bug in baking with incorrect prim/object Fixes T91968, T91770, T91902 Differential Revision: https://developer.blender.org/D12766
2021-10-06Fix compilation error with MSVCSergey Sharybin
MSVC does not support variable size array definition. Use maximum possible stack, similar to the GPU case. Not expected to have user-measurable difference.
2021-10-06Fix T91922: Cycles artifacts with high volume nested levelSergey Sharybin
Make volume stack allocated conditionally, potentially based on the actual nested level of objects in the scene. Currently the nested level is estimated by number of volume objects. This is a non-expensive check which is probably enough in practice to get almost perfect memory usage and performance. The conditional allocation is a bit tricky. For the CPU we declare and define maximum possible volume stack, because there are only that many integrator states on the CPU. On the GPU we declare outer SoA to have all volume stack elements, but only allocate actually needed ones. The actually used volume stack size is passed as a pre-processor, which seems to be easiest and fastest for the GPU state copy. There seems to be no speed regression in the demo files on RTX6000. Note that scenes with high nested level of volume will now be slower but correct. Differential Revision: https://developer.blender.org/D12759