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-03-30Cycles: Do not allocate tile buffers on all devices when peer memory is ↵Patrick Mours
active and denoising is not Separate tile buffers on all devices only need to exist when denoising is active (so any overlap being rendered simultaneously does not write to the same memory region). When denoising is not active they can be distributed like all other memory when peer memory support is available. Reviewed By: brecht Differential Revision: https://developer.blender.org/D10858
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2021-01-05Fix T83925: Crash when rendering on the CPU with OptiX denoiser enabledPatrick Mours
Rendering on the CPU uses the Embree BVH layout, whether the OptiX denoiser is enabled or not. This means the "build_bvh" function gets a "BVHEmbree" object to fill and not a "BVHMulti" as it was assuming before, which caused crashes due to memory geting overwritten incorrectly. This fixes that by redirecting Embree BVH builds to the Embree device. Manifest Tasks: T83925
2020-12-11Cleanup: compiler warningsBrecht Van Lommel
If you mark one function as override in a class, all must be marked.
2020-12-11Cycles: Add CPU+GPU rendering support with OptiXPatrick Mours
Adds support for building multiple BVH types in order to support using both CPU and OptiX devices for rendering simultaneously. Primitive packing for Embree and OptiX is now standalone, so it only needs to be run once and can be shared between the two. Additionally, BVH building was made a device call, so that each device backend can decide how to perform the building. The multi-device for instance creates a special multi-BVH that holds references to several sub-BVHs, one for each sub-device. Reviewed By: brecht, kevindietrich Differential Revision: https://developer.blender.org/D9718
2020-09-15Fix T80477: Crash when rendering with Embree but denoising with OptiXPatrick Mours
Commit 009971ba7adc9603b90e9bf99b6b6d53eeae6c3a changed it so Cycles creates a separate Embree device for each Cycles device, but missed the multi-device case. A multi-device with Embree BVH can occur when CPU rendering is used with OptiX denoising and BVH creation then failed to get a valid pointer to the Embree device, which crashed. This fixes that by providing the correct device pointer in the multi-device case as well.
2020-07-10Cleanup: reduce hardcoded numbers in denoising neighbor tiles codeBrecht Van Lommel
2020-07-06Fix OptiX viewport denoising not working when rendering scene (without ↵Patrick Mours
OptiX) that uses unsupported features Denoising devices do not need to load the full feature set of kernels, so only activate the denoising feature for them (so that it is possible to use features that are supported by the render devices, but not the denoising devices).
2020-06-25Cleanup: spellingCampbell Barton
2020-06-10Cleanup: fix compiler warning after recent changesBrecht Van Lommel
It would be good to use override for all member functions, but doing it for only somes generates compiler warning.
2020-06-10Cycles: Improve OptiX viewport denoising performance with CUDA renderingPatrick Mours
With this patch Cycles recognizing when a logical OptiX and CUDA device represent the same physical GPU and attempts to eliminate unnecessary tile copies for viewport rendering if that is the case for all active devices. In addition, denoising is now no longer performed on the first available OptiX device only, but instead it will try to match CUDA and OptiX rendering/denoising devices exactly to maximize utilization. Reviewed By: brecht Differential Revision: https://developer.blender.org/D7975
2020-06-08Cycles: Add support for P2P memory distribution (e.g. via NVLink)Patrick Mours
This change modifies the multi-device implementation to support memory distribution across devices, to reduce the overall memory footprint of large scenes and allow scenes to fit entirely into combined GPU memory that previously had to fall back to host memory. Reviewed By: brecht Differential Revision: https://developer.blender.org/D7426
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-05Fix T74393: Cycles crashes when both OSL and Optix Denoising are enabledPatrick Mours
Enabling viewport denoising causes Cycles to use a multi-device, which always returned NULL when asked for OSL memory and would subsequently crash. This fixes that by returning the correct OSL memory pointer from the CPU device in the special viewport denoising multi-device.
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-13Cleanup: pass const variablesCampbell Barton
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
2019-11-28Fix assert in Cycles memory statistics when using OptiX on multiple GPUsPatrick Mours
The acceleration structure built by OptiX may be different between GPUs, so cannot assume the memory size is the same for all. This fixes that by moving the memory management for all OptiX acceleration structures into the responsibility of each device (was already the case for BLAS previously, now for TLAS too).
2019-09-13Cycles: add Optix device backendPatrick Mours
This uses hardware-accelerated raytracing on NVIDIA RTX graphics cards. It is still currently experimental. Most features are supported, but a few are still missing like baking, branched path tracing and using CPU memory. https://wiki.blender.org/wiki/Reference/Release_Notes/2.81/Cycles#NVIDIA_RTX For building with Optix support, the Optix SDK must be installed. See here for build instructions: https://wiki.blender.org/wiki/Building_Blender/CUDA Differential Revision: https://developer.blender.org/D5363
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-03-16Cleanup: fix compiler warnings.Brecht Van Lommel
2019-03-15Merge branch 'blender2.7'Jeroen Bakker
2019-03-15Cycles/OpenCL: Compile Kernels During Scene UpdateJeroen Bakker
The main goals of this change is faster starting when using foreground rendering. This patch will build kernels in parallel to the update process of the scene. When these optimized kernels are not available (yet) an AO kernel will be used. These AO kernels are fast to compile (3-7 seconds) and can be reused by all scenes. When the final kernels become available we will switch to these kernels. In background mode the AO kernels will not be used. Some kernels are being used during Scene update (displace, background light). When these kernels are being used the process can halt until these become available. Reviewed By: brecht, #cycles Maniphest Tasks: T61752 Differential Revision: https://developer.blender.org/D4428
2018-11-30Merge branch 'master' into blender2.8Brecht Van Lommel
2018-11-30Fix T58183: crash with CPU + GPU rendering after profiling changes.Brecht Van Lommel
Multi-device was not passing along profiler to the CPU.
2018-10-31Merge branch 'master' into blender2.8Sergey Sharybin
2018-10-31Cycles: Fix wrong BVH used when disabling AVX2 in debug settingsSergey Sharybin
Mainly useful for debugging. Previously, when AVX2 was disabled in the debug panel but BVH layout was kept on BVH8 nothing was rendered. Needed to make it so supported BVH layout mask for devices is queried in "dynamic", so it is possible to use DebugFlags there.
2018-07-06Merge branch 'master' into blender2.8Campbell Barton
2018-07-06Cleanup: strip trailing space for cyclesCampbell Barton
2018-07-05Merge branch 'master' into blender2.8Campbell Barton
2018-07-04Cycles Denoising: Correctly handle target buffer in tile unmapping and move ↵Lukas Stockner
device swap logic to the device_memory
2018-01-03Merge branch 'master' into blender2.8Campbell Barton
2018-01-03Cycles: CUDA support for rendering scenes that don't fit on GPU.Brecht Van Lommel
In that case it can now fall back to CPU memory, at the cost of reduced performance. For scenes that fit in GPU memory, this commit should not cause any noticeable slowdowns. We don't use all physical system RAM, since that can cause OS instability. We leave at least half of system RAM or 4GB to other software, whichever is smaller. For image textures in host memory, performance was maybe 20-30% slower in our tests (although this is highly hardware and scene dependent). Once other type of data doesn't fit on the GPU, performance can be e.g. 10x slower, and at that point it's probably better to just render on the CPU. Differential Revision: https://developer.blender.org/D2056
2017-10-25Merge branch 'master' into blender2.8Sergey Sharybin
2017-10-24Fix T53146: incomplete multi GPU and CPU + GPU memory statistics.Brecht Van Lommel
Part due to recent changes, part old bug.
2017-10-24Merge branch 'master' into blender2.8Sergey Sharybin
2017-10-24Fix T53134: denoising with CPU + GPU render leaves some tiles noisy.Brecht Van Lommel
2017-10-24Merge branch 'master' into blender2.8Brecht Van Lommel
2017-10-24Code refactor: move more memory allocation logic into device API.Brecht Van Lommel
* Remove tex_* and pixels_* functions, replace by mem_*. * Add MEM_TEXTURE and MEM_PIXELS as memory types recognized by devices. * No longer create device_memory and call mem_* directly, always go through device_only_memory, device_vector and device_pixels.
2017-10-24Code refactor: store device/interp/extension/type in each device_memory.Brecht Van Lommel
2017-10-06Merge branch 'master' into blender28Campbell Barton
2017-10-05Code refactor: split displace/background into separate kernels, remove luma.Brecht Van Lommel
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-05-08Merge branch 'master' into blender2.8Julian Eisel
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-04-28Cycles support for preview on viewport with core profileDalai Felinto
This upgrade the drawing code to use latest opengl calls. Also, it adds a fallback shader for opencolorio. Reviewers: sergey, brecht Subscribers: merwin, fclem Differential Revision: https://developer.blender.org/D2652
2017-03-29Cycles: Make all #include statements relative to cycles source directorySergey Sharybin
The idea is to make include statements more explicit and obvious where the file is coming from, additionally reducing chance of wrong header being picked up. For example, it was not obvious whether bvh.h was refferring to builder or traversal, whenter node.h is a generic graph node or a shader node and cases like that. Surely this might look obvious for the active developers, but after some time of not touching the code it becomes less obvious where file is coming from. This was briefly mentioned in T50824 and seems @brecht is fine with such explicitness, but need to agree with all active developers before committing this. Please note that this patch is lacking changes related on GPU/OpenCL support. This will be solved if/when we all agree this is a good idea to move forward. Reviewers: brecht, lukasstockner97, maiself, nirved, dingto, juicyfruit, swerner Reviewed By: lukasstockner97, maiself, nirved, dingto Subscribers: brecht Differential Revision: https://developer.blender.org/D2586
2017-03-08Cycles: Add names to buffer allocationsMai Lavelle
This is to help debug and track memory usage for generic buffers. We have similar for textures already since those require a name, but for buffers the name is only for debugging proposes.
2017-02-20Fix T50719: Memory usage won't reset to zero while re-rendering on two video ↵Sergey Sharybin
cards Was only visible with Persistent Images option ON.
2016-12-03Cycles: Refactor Progress system to provide better estimatesLukas Stockner
The Progress system in Cycles had two limitations so far: - It just counted tiles, but ignored their size. For example, when rendering a 600x500 image with 512x512 tiles, the right 88x500 tile would count for 50% of the progress, although it only covers 15% of the image. - Scene update time was incorrectly counted as rendering time - therefore, the remaining time started very long and gradually decreased. This patch fixes both problems: First of all, the Progress now has a function to ignore time spans, and that is used to ignore scene update time. The larger change is the tile size: Instead of counting samples per tile, so that the final value is num_samples*num_tiles, the code now counts every sample for every pixel, so that the final value is num_samples*num_pixels. Along with that, some unused variables were removed from the Progress and Session classes. Reviewers: brecht, sergey, #cycles Subscribers: brecht, candreacchio, sergey Differential Revision: https://developer.blender.org/D2214