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-02-17Merge branch 'blender-v2.92-release'Brecht Van Lommel
2021-02-17Fix T85440: crash with displacement shaders and updating geometry in viewportBrecht Van Lommel
When primitive offsets change we need to rebuild or refit BVHs, however this was also tagging other data as modified too late in the geometry update process. Now ensure only the BVHs are updated. Ref D10441
2021-02-17Cycles: detect when attributes have changedJacques Lucke
This patch has originally been written by Kévin Dietrich, thanks! It is part of D10210. As Brecht noted in D10210, this might not handle all cases yet. I better solution should come soonish.
2021-02-12OpenColorIO: upgrade to version 2.0.0Brecht Van Lommel
Ref T84819 Build System ============ This is an API breaking new version, and the updated code only builds with OpenColorIO 2.0 and later. Adding backwards compatibility was too complicated. * Tinyxml was replaced with Expat, adding a new dependency. * Yaml-cpp is now built as a dependency on Unix, as was already done on Windows. * Removed currently unused LCMS code. * Pystring remains built as part of OCIO itself, since it has no good build system. * Linux and macOS check for the OpenColorIO verison, and disable it if too old. Ref D10270 Processors and Transforms ========================= CPU processors now need to be created to do CPU processing. These are cached internally, but the cache lookup is not fast enough to execute per pixel or texture sample, so for performance these are now also exposed in the C API. The C API for transforms will no longer be needed afer all changes, so remove it to simplify the API and fallback implementation. Ref D10271 Display Transforms ================== Needs a bit more manual work constructing the transform. LegacyViewingPipeline could also have been used, but isn't really any simpler and since it's legacy we better not rely on it. We moved more logic into the opencolorio module, to simplify the API. There is no need to wrap a dozen functions just to be able to do this in C rather than C++. It's also tightly coupled to the GPU shader logic, and so should be in the same module. Ref D10271 GPU Display Shader ================== To avoid baking exposure and gamma into the GLSL shader and requiring slow recompiles when tweaking, we manually apply them in the shader. This leads to some logic duplicaton between the CPU and GPU display processor, but it seems unavoidable. Caching was also changed. Previously this was done both on the imbuf and opencolorio module levels. Now it's all done in the opencolorio module by simply matching color space names. We no longer use cacheIDs from OpenColorIO since computing them is expensive, and they are unlikely to match now that more is baked into the shader code. Shaders can now use multiple 2D textures, 3D textures and uniforms, rather than a single 3D texture. So allocating and binding those adds some code. Color space conversions for blending with overlays is now hardcoded in the shader. This was using harcoded numbers anyway, if this every becomes a general OpenColorIO transform it can be changed, but for now there is no point to add code complexity. Ref D10273 CIE XYZ ======= We need standard CIE XYZ values for rendering effects like blackbody emission. The relation to the scene linear role is based on OpenColorIO configuration. In OpenColorIO 2.0 configs roles can no longer have the same name as color spaces, which means our XYZ role and colorspace in the configuration give an error. Instead use the new standard aces_interchange role, which relates scene linear to a known scene referred color space. Compatibility with the old XYZ role is preserved, if the configuration file has no conflicting names. Also includes a non-functional change to the configuraton file to use an XYZ-to-ACES matrix instead of REC709-to-ACES, makes debugging a little easier since the matrix is the same one we have in the code now and that is also found easily in the ACES specs. Ref D10274
2021-02-11Fix T85462: crash in render mode while removing instancesKévin Dietrich
This crash is caused by accessing object data in the kernel at an out of bound index from a deleted instance. Cycles represents instances as Object nodes sharing the same Geometry node, so we need to tag the GeometryManager for an update if some objects are added or removed as no geometry might have been added or removed in order to properly update the BVH and its associated data arrays. Regression caused by rBbbe6d4492823.
2021-02-09Cycles: fix wrong flags used to tag device data as dirtyKévin Dietrich
Also fixes missing modified tag for float2 and float3 attributes arrays.
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2021-02-03Alembic procedural: fix crash when cancelling a render duringKévin Dietrich
synchronization
2021-01-29Fix T85144: Cycles crashes when editing render properties in viewportKévin Dietrich
rendering Issue was caused by the sample pattern LUT always being freed and not rebuilt when properties driving its dimensions were modified.
2021-01-27Cleanup: spellingCampbell Barton
2021-01-26Merge branch 'blender-v2.92-release'Richard Antalik
2021-01-26Fix T85048: Cycles sculpt vertex color issues after recent changesBrecht Van Lommel
Attribute fields were not fully copied. Ref D10208
2021-01-26Fix Cycles standalone compilation following API changesCharles Flèche
The changes to the socket API were not applied to the standalone app. Also modify Camera.compute_auto_viewplane() to use Camera.full_width and Camera.full_height as it is not possible to publicly access Camera.width and Camera.height anymore, so the aspect ratio could be computed with stale data. Differential Revision: https://developer.blender.org/D9961
2021-01-25Cleanup: spellingCampbell Barton
2021-01-25Merge branch 'blender-v2.92-release'Hans Goudey
2021-01-25Fix build error after Cycles Amembic procedural commitBrecht Van Lommel
2021-01-25Cycles: internal support for Alembic proceduralsKevin Dietrich
The implementation is currently optimized to load animation sequences once and then quickly scrubbing through them. Later on an option should be added to optimize for memory usage and only load the current frame into memory. Currently mesh and curve objects are supported, including support for UV and vertex color attributes. Missing still is support for arbitrary attributes and motion blur, as well as better handling of changing topology. Shader assignments are made using FaceSets found in the Alembic archive. The animation (and constant) data of the objects inside the Alembic archive is loaded at once at the beginning of the render and kept inside a cache. At each frame change we simply update the right socket of the corresponding Cycles node if the data is animated. This allows for fast playback in the viewport (depending on the scene size and compute power). Note this is not yet exposed in the Blender UI, it's a feature that is still under development and not ready for general use. Ref T79174, D3089
2021-01-25Cycles: internal support for the concept of proceduralsKevin Dietrich
Procedurals are nodes in the scene that can generate an arbitrary number of other nodes at render time. This will be used to implement an Alembic procedural that can load an Alembic file into Cycles nodes. In the future we also expect to have a USD procedural. Direct loading of such files at render time is a standard feature in other production renderers. Reasons to support this are memory usage and performance, delayed loading of heavy scene data until rendering, Cycles standalone rendering using standard file formats beyond our XML files, and shared functionality for Cycles integration in multiple 3D apps. Ref T79174, D3089
2021-01-25Fix T83344: Cycles baking with progressive refine fails on GPUBrecht Van Lommel
2021-01-25Fix T85010: Cycles viewport not showing certain material changes when using ↵Kévin Dietrich
GPU compute Modifications to triangle shader association were not considered when checking for updates and the associated device data array was not tagged as modified so it was not resent to the device(s).
2021-01-24Cleanup: spellingCampbell Barton
2021-01-22Cycles: optimize device updatesKévin Dietrich
This optimizes device updates (during user edits or frame changes in the viewport) by avoiding unnecessary computations. To achieve this, we use a combination of the sockets' update flags as well as some new flags passed to the various managers when tagging for an update to tell exactly what the tagging is for (e.g. shader was modified, object was removed, etc.). Besides avoiding recomputations, we also avoid resending to the devices unmodified data arrays, thus reducing bandwidth usage. For OptiX and Embree, BVH packing was also multithreaded. The performance improvements may vary depending on the used device (CPU or GPU), and the content of the scene. Simple scenes (e.g. with no adaptive subdivision or volumes) rendered using OptiX will benefit from this work the most. On average, for a variety of animated scenes, this gives a 3x speedup. Reviewed By: #cycles, brecht Maniphest Tasks: T79174 Differential Revision: https://developer.blender.org/D9555
2021-01-21Fix T83344: Cycles baking + progressive refine failsBrecht Van Lommel
2021-01-21Fix T84908: Cycles GPU + CPU and denoising failure after recent fixBrecht Van Lommel
2021-01-20Fix T84872: OptiX GPU + CPU rendering uses branched path samplesBrecht Van Lommel
Branched path tracing is not supported for OptiX, and it would still use the number of AA samples from there when branched path was enabled by the user earlier but auto disabled and hidden in the UI when using OptiX. Ref D10159
2021-01-20Fix T84813: enabling Cycles OpenImageDenoise during GPU viewport render failsBrecht Van Lommel
2021-01-20Fix T84049: Crash when using Cycles Progressive Refine with OptiX+CPUPatrick Mours
Tile stealing may steal a CPU tile buffer and move it to the GPU, but next time around that tile may be re-used on the CPU again (in progressive refinement mode). The buffer would still be on the GPU then though, so is inaccessible to the CPU. As a result Blender crashed when the CPU tried to write results to that tile buffer. This fixes that by ensuring a stolen tile buffer is moved back to the device it is used on before rendering.
2021-01-18Fix T84650: CPU render + OptiX denoiser leaves empty tiles unprocessedPatrick Mours
The OptiX denoiser is part of the OptiX device, so to the tile manager looks like a GPU device. As a result the tile stealing implementation erroneously stole CPU tiles and moved them to that OptiX device, even though in this configuration the OptiX device was only set up for denoising and not rendering. Launching the render kernel therefore caused a crash because of a missing AS etc. This fixes that by ensuring tiles can only be stolen by devices that support render tiles.
2021-01-13Fix Cycles not taking into account CYCLES_SHADER_PATH for finding stdcycles.hBrecht Van Lommel
Contributed by howetuft. Differential Revision: https://developer.blender.org/D9973
2021-01-11Fix T84496: Cycles: Tile stealing does not work with NLMLukas Stockner
Reviewed By: brecht Maniphest Tasks: T84496 Differential Revision: https://developer.blender.org/D10066
2021-01-05Fix T83915: Subdivision Surface modifier causes visual artifacts in Cycles ↵Patrick Mours
rendered viewport - CPU and OptiX Changing the geometry in the current scene caused the primitive offsets for all geometry to change, but the values would not be updated in all bottom-level BVH structures. Rendering artifacts and crashes where the result. This fixes that by ensuring all BVH structures are updated when the primitive offsets change.
2020-12-24Cleanup: compiler warningBrecht Van Lommel
2020-12-24Cycles: remove surface area computation for meshes with OSLBrecht Van Lommel
This is relatively expensive and as per the OSL spec, this value is not expected to be meaningful for non-light shaders. This makes viewport updates a little faster. As a side effect also fixes T82723, viewport refresh issue with volume density.
2020-12-22Fix T84006: Cycles AOV not written with some mix shader node set upsBrecht Van Lommel
2020-12-15Cleanup: make formatJacques Lucke
2020-12-14Fix T75539: Cycles missing geometry update when switching displacement methodJoan Bonet Orantos
The shaders were not tagged for a needed geometry update when the displacement method was modified, neither were the Geometry and Object managers. Reviewed By: kevindietrich Maniphest Tasks: T75539 Differential Revision: https://developer.blender.org/D8896
2020-12-11Fix T83586: Cycles failing to load OpenEXR image with EXR RGBAZ channelsValdemar Lindberg
Don't refuse to load 5-channel images, instead drop any channels after the 4th and hope that the first channels represent RGBA. Differential Revision: https://developer.blender.org/D9820
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-12-10Fix T82852: Cycles crashes when editing a mesh with adaptive subdivisionKévin Dietrich
The issue is caused by stale data on the Mesh Node which is not cleared during synchronizing since the socket API refactor so that we can detect changes. However, synchronization only updates the sockets of the Mesh, so other properties were left with outdated values. This caused an underflow when computing attribute size for undisplaced coordinates as it was using the current number of vertices minus the previous count of subdivision vertices, which at this point should be 0. Added a simple method to clear non socket data. Also modified Mesh.add_undisplaced to always use an ATTR_PRIM_GEOMETRY as the data is not subdivided yet and it avoids any further issues regarding computing attribute sizes.
2020-12-02Fix T83300: constant scene refreshing in Cycles with empty volumesKévin Dietrich
This infinite loop is caused by a conflict between the volume mesh creation which unintentionally clears the shaders before early exiting when no grid is found, and the Blender exporter which adds back the shaders causing us to reupdate as the shaders changed. To fix this simply preserve the shaders on the Volume node.
2020-11-30Cleanup: avoid harmless but unnecessary float division by zeroBrecht Van Lommel
2020-11-20Cleanup: spellingCampbell Barton
2020-11-17Merge branch 'blender-v2.91-release'Richard Antalik
Conflicts: source/blender/editors/render/render_opengl.c source/blender/sequencer/intern/effects.c
2020-11-17Cycles: Fix compilation error and warning without OPENVDBClément Foucault
2020-11-16Merge branch 'blender-v2.91-release'Brecht Van Lommel
2020-11-16Fix T82673: Cycles crash with zero emission strength and linked emission colorBrecht Van Lommel
2020-11-16Fix T81983: volume tiles missing in Cycles rendersKévin Dietrich
The OpenVDB data structure can store voxel data in leaf nodes or tiles when all the nodes in a given region have a constant value. However, Cycles is using the leaf nodes to generate the acceleration structure for computing volume intersections which did not include constant tiles. To fix this, we simply voxelize all the active tiles prior to generating the volume bounding mesh. As we are using a MaskGrid, this will not allocate actual voxel buffers for each leaf, so the memory usage will be kept low. Differential Revision: https://developer.blender.org/D9557 Reviewed by: brecht, JacquesLucke
2020-11-12Merge branch 'blender-v2.91-release'Brecht Van Lommel
2020-11-12Fix T82607: crash cancelling Cycles render during adaptive subdivision updateBrecht Van Lommel
Now that the Blender sync mechanism deletes nodes from the scene, we need to ensure scene update is stopped before we do this. Also add some more early out in scene geometry update to ensure we do not continue working on incomplete geometry data, though that was not the cause of this crash.