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
2022-04-02Cycles: Add support for light groupsLukas Stockner
Light groups are a type of pass that only contains lighting from a subset of light sources. They are created in the View layer, and light sources (lamps, objects with emissive materials and/or the environment) can be assigned to a group. Currently, each light group ends up generating its own version of the Combined pass. In the future, additional types of passes (e.g. shadowcatcher) might be getting their own per-lightgroup versions. The lightgroup creation and assignment is not Cycles-specific, so Eevee or external render engines could make use of it in the future. Note that Lightgroups are identified by their name - therefore, the name of the Lightgroup in the View Layer and the name that's set in an object's settings must match for it to be included. Currently, changing a Lightgroup's name does not update objects - this is planned for the future, along with other features such as denoising for light groups and viewing them in preview renders. Original patch by Alex Fuller (@mistaed), with some polishing by Lukas Stockner (@lukasstockner97). Differential Revision: https://developer.blender.org/D12871
2022-04-02Cleanup: Further use of const for object bounding boxesHans Goudey
Also solves two warnings from the previous similar commit, f688e3cc3130e70e77f0bb0. The change to the grease pencil modifier is quite suspicious, but doesn't change the behavior, which was already broken.
2022-04-01Cycles: Semantically separate 2D and 3D texture objectsStefan Werner
Currently there are no functional changes. Preparing for an upcoming oneAPI integration where such separation in types is needed.
2022-04-01Cycles: Introduce postfix for kernel body definitionStefan Werner
Increases flexibility of code-generation for kernel entry points. Currently no functional changes, preparing for integration with oneAPI.
2022-04-01Cycles: Use single floating point precision sine/cosine in skyStefan Werner
Should be no functional changes.
2022-04-01Cycles: Optimize Nishita skyStefan Werner
Reduce register pressure. Helps with kernel compile time and render time. Should be no functional changes.
2022-04-01Cycles: approximate shadow caustics using manifold next event estimationOlivier Maury
This adds support for selective rendering of caustics in shadows of refractive objects. Example uses are rendering of underwater caustics and eye caustics. This is based on "Manifold Next Event Estimation", a method developed for production rendering. The idea is to selectively enable shadow caustics on a few objects in the scene where they have a big visual impact, without impacting render performance for the rest of the scene. The Shadow Caustic option must be manually enabled on light, caustic receiver and caster objects. For such light paths, the Filter Glossy option will be ignored and replaced by sharp caustics. Currently this method has a various limitations: * Only caustics in shadows of refractive objects work, which means no caustics from reflection or caustics that outside shadows. Only up to 4 refractive caustic bounces are supported. * Caustic caster objects should have smooth normals. * Not currently support for Metal GPU rendering. In the future this method may be extended for more general caustics. TECHNICAL DETAILS This code adds manifold next event estimation through refractive surface(s) as a new sampling technique for direct lighting, i.e. finding the point on the refractive surface(s) along the path to a light sample, which satisfies Fermat's principle for a given microfacet normal and the path's end points. This technique involves walking on the "specular manifold" using a pseudo newton solver. Such a manifold is defined by the specular constraint matrix from the manifold exploration framework [2]. For each refractive interface, this constraint is defined by enforcing that the generalized half-vector projection onto the interface local tangent plane is null. The newton solver guides the walk by linearizing the manifold locally before reprojecting the linear solution onto the refractive surface. See paper [1] for more details about the technique itself and [3] for the half-vector light transport formulation, from which it is derived. [1] Manifold Next Event Estimation Johannes Hanika, Marc Droske, and Luca Fascione. 2015. Comput. Graph. Forum 34, 4 (July 2015), 87–97. https://jo.dreggn.org/home/2015_mnee.pdf [2] Manifold exploration: a Markov Chain Monte Carlo technique for rendering scenes with difficult specular transport Wenzel Jakob and Steve Marschner. 2012. ACM Trans. Graph. 31, 4, Article 58 (July 2012), 13 pages. https://www.cs.cornell.edu/projects/manifolds-sg12/ [3] The Natural-Constraint Representation of the Path Space for Efficient Light Transport Simulation. Anton S. Kaplanyan, Johannes Hanika, and Carsten Dachsbacher. 2014. ACM Trans. Graph. 33, 4, Article 102 (July 2014), 13 pages. https://cg.ivd.kit.edu/english/HSLT.php The code for this samping technique was inserted at the light sampling stage (direct lighting). If the walk is successful, it turns off path regularization using a specialized flag in the path state (PATH_MNEE_SUCCESS). This flag tells the integrator not to blur the brdf roughness further down the path (in a child ray created from BSDF sampling). In addition, using a cascading mechanism of flag values, we cull connections to caustic lights for this and children rays, which should be resolved through MNEE. This mechanism also cancels the MIS bsdf counter part at the casutic receiver depth, in essence leaving MNEE as the only sampling technique from receivers through refractive casters to caustic lights. This choice might not be optimal when the light gets large wrt to the receiver, though this is usually not when you want to use MNEE. This connection culling strategy removes a fair amount of fireflies, at the cost of introducing a slight bias. Because of the selective nature of the culling mechanism, reflective caustics still benefit from the native path regularization, which further removes fireflies on other surfaces (bouncing light off casters). Differential Revision: https://developer.blender.org/D13533
2022-04-01Cycles: enable Alembic procedural for final rendersKévin Dietrich
The Alembic procedural was only enabled during viewport renders originally because it did not have any caching strategy. Now that is does, we can allow its usage in final renders. This also removes the `dag_eval_mode` argument passing to `ModifierTypeInfo.dependsOnTime` which was originally added to detect if we are doing a viewport render for enabling the procedural. Differential Revision: https://developer.blender.org/D14520
2022-03-31Cleanup: spelling, trailing space for comment-blocksCampbell Barton
2022-03-30Cleanup: spelling in commentsCampbell Barton
2022-03-25Cleanup: remove argument to doxygen \fileCampbell Barton
Doxygen doesn't require this to be set.
2022-03-25Cleanup: use array syntax for sizeof, zero before float suffixCampbell Barton
2022-03-25ImBuf: Add support for WebP image formatAaron Carlisle
Currently only supports single image frames (no animation possible). If quality slider is set to 100 then lossless compression will be used, otherwise lossy compression is used. Gives about 35% reduction of filesize save when re-saving splash screens with lossless compression. Also saves much faster, up to 15x faster than PNG with a better compression ratio as a plus. Note, this is currently left disabled until we have WebP libs (see T95206) For testing precompiled libs can be downloaded from Google: https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html Differential Revision: https://developer.blender.org/D1598
2022-03-24Cycles: don't write light passes for shadow catcher objectsBrecht Van Lommel
Makes it easier to composite the Combined image from these passes. Fixes T96758
2022-03-24Fix T94001: OpenColorIO configuration with 1D textures not workingBrecht Van Lommel
2022-03-24Fix T90110: Dupli Window Not Immediately ActiveLictex Steaven
When creating a new window from a duplicated area - by shift-dragging on corner action zones - on the Windows platform the resulting window is initially unresponsive. This patch fixes this by releasing the parent window's mouse capture. See D14085 for more details. Differential Revision: https://developer.blender.org/D14085 Reviewed by Ray Molenkamp
2022-03-24Cleanup: clang-formatDalai Felinto
2022-03-24Cycles: enable HIP for Vega and Vega II (Radeon 7) GPUs on WindowsBrian Savery
Basic testing on windows only so far. Will need some testing on Linux as well when the Linux enablement patch is ready. Does not enable Vega APUs yet (which would be gfx902 or gfx90c). Differential Revision: https://developer.blender.org/D14432
2022-03-24Fix Cycles Metal build error and GCC warning after recent changesBrecht Van Lommel
Function overloading of make_float4() doesn't work since it's a macro, just don't do this minor cleanup then.
2022-03-24Fix compile error on GCCKévin Dietrich
Explicit template specialization has to happen outside of class definition (some compilers are more lenient). Since it is not possible to specialize the method without also specializing the enclosing class for all of its possible types, the method is moved outside of the class, and specialized there.
2022-03-23Cycles: add Alembic procedural to Cycles standalone xmlCharles Flèche
Example: <alembic filepath="/tmp/cube.abc" scale="1.45"> <object path="/Cube/Cube" /> </alembic> Differential Revision: https://developer.blender.org/D14391
2022-03-23Cleanup: use make_float4(f) zero_float4() to simplify codeEthan-Hall
Differential Revision: https://developer.blender.org/D14426
2022-03-23Cycles: optimize CPU texture sampler interpolationEthan-Hall
Use templates to optimize the CPU texture sampler to interpolate using float for single component datatypes instead of using float4 for all types. Differential Revision: https://developer.blender.org/D14424
2022-03-23CMake: Rename "USD_LIBRARY_PREFIX" to "PXR_LIB_PREFIX" for consistencyPatrick Mours
rBc1909770e7f192574ea62449dd14b4254637e604 introduced "PXR_LIB_PREFIX" for building the dependencies, so only makes sense to use the same name in the Hydra render delegate CMake too
2022-03-23Cycles: Add Hydra render delegatePatrick Mours
This patch adds a Hydra render delegate to Cycles, allowing Cycles to be used for rendering in applications that provide a Hydra viewport. The implementation was written from scratch against Cycles X, for integration into the Blender repository to make it possible to continue developing it in step with the rest of Cycles. For this purpose it follows the style of the rest of the Cycles code and can be built with a CMake option (`WITH_CYCLES_HYDRA_RENDER_DELEGATE=1`) similar to the existing standalone version of Cycles. Since Hydra render delegates need to be built against the exact USD version and other dependencies as the target application is using, this is intended to be built separate from Blender (`WITH_BLENDER=0` CMake option) and with support for library versions different from what Blender is using. As such the CMake build scripts for Windows had to be modified slightly, so that the Cycles Hydra render delegate can e.g. be built with MSVC 2017 again even though Blender requires MSVC 2019 now, and it's possible to specify custom paths to the USD SDK etc. The codebase supports building against the latest USD release 22.03 and all the way back to USD 20.08 (with some limitations). Reviewed By: brecht, LazyDodo Differential Revision: https://developer.blender.org/D14398
2022-03-23Color Management: add support for OpenColorIO color space aliasesBrecht Van Lommel
This enables the configuration to specify aliases for compatibility with other configurations. When a colorspace name is saved in a.blend, that is the alias of a colorspace in the current configuration, it will show the main colorspace from the configuration in the user interface and Python API instead. Loading & saving the .blend file does not make any changes to the stored name, so as to not make hidden modifications. Only when setting the property again will the alias name be overwritten by the main colorspace name. Fixes T96049 Differential Revision: https://developer.blender.org/D14419
2022-03-23Fix T96502: Compilation error OCIO when using GradingPrimaryTransform.Jeroen Bakker
When using GradingPrimaryTransform the generated GLSL code fails to compile. The actual issue is inside OCIO (https://github.com/AcademySoftwareFoundation/OpenColorIO/issues/1603). The reason is that unset clamping values are rendered out as `inf`, which isn't recognizable by GLSL. The issue is worked around by defining a default for `inf`. Reviewed By: brecht Maniphest Tasks: T96502 Differential Revision: https://developer.blender.org/D14425
2022-03-23Cleanup: move documentation to headers, other minor correctionsCampbell Barton
2022-03-21Fix T96132: Cycles RGB/Vector/Float Curve shaders ignore extrapolation settingHallam Roberts
Differential Revision: https://developer.blender.org/D14393
2022-03-21Cycles: make 3D texture sampling at boundaries more similar to GPUEthan-Hall
CPU code for cubic interpolation with clip texture extension only performed texture interpolation inside the range of [0,1]. As a result, even though the volume's color is sampled using cubic interpolation, the boundary is not being interpolated. The GPU appears was interpolating samples that span the clip boundary softening the edge, which the CPU now does also. This commit also includes refactoring of 2D and 3D texture sampling in preparation of adding new extension modes. Differential Revision: https://developer.blender.org/D14295
2022-03-21Cycles: Un-pause render when switching to rendered viewportSergey Sharybin
Consider switching to rendered shading type as a request to start rendering, without requiring to un-pause. This minimizes amount of clicks needed to start rendering after viewport was paused once, and then shading mode got changed. Reviewed By: brecht Differential Revision: https://developer.blender.org/D14244
2022-03-19Fix D14173: Chinese IME Full Width NumbersHarley Acheson
Windows IME: Fix duplicated initial character when entering numbers while in Chinese full width character mode. See D14354 for more details. Differential Revision: https://developer.blender.org/D14354 Reviewed by Brecht Van Lommel
2022-03-18Cleanup: Compilation warningsSergey Sharybin
Mainly -Wset-but-unused-variable. Makes default compilation on macOS way less noisy. Differential Revision: https://developer.blender.org/D14357
2022-03-18License headers: use SPDX identifiers in intern/itascCampbell Barton
Added license headers based on the original LGPL files from: gitlab.kuleuven.be/rob-itasc
2022-03-16Fix Cycles HIP assuming warp size 32Brecht Van Lommel
In HIP these masks are 64 bit, while in CUDA only 32 bit.
2022-03-16Cleanup: remove some unused Cycles GPU codeBrecht Van Lommel
To make porting to other architectures easier, clarifying that this does not need to be supported. The unused parallel_reduce implementation assumed warp size 32, but is easy to update if we ever need it in the future.
2022-03-16Cleanup: Deprecated field access in outliner_duplicateSergey Sharybin
Solved by introducing introducing a variant of MEM_cnew which behaves as a copy-constructor for a trivial types. Alternative approach would be to surround DNA structs with clang/gcc diagnostics push/modify/pop so that implicitly defined constructors and copy operators are allowed to access deprecated fields. The downside of the DNA approach is that it will require some way to easily apply diagnostics modifications to many structs, which is not possible currently. The newly added MEM_cnew has other good usecases, so is easiest to use this route, at least for now. Differential Revision: https://developer.blender.org/D14356
2022-03-16Cleanup: rename cnt to countCampbell Barton
Follow naming from T85728.
2022-03-15Fix T96381: Cycles GPU wrong render with camera inside multiple volumesBrecht Van Lommel
2022-03-15Fix Cycles kernel error on Metal after recent changesBrecht Van Lommel
2022-03-15Cycles: allow Adaptive Sampling with Scrambling DistanceBrecht Van Lommel
While the correlation may not work well with adaptive sampling, in practice this appears to work ok in most cases Automatic scrambling distance uses the minimum samples from adaptive sampling, which provides a good default estimate to avoid artifacts. Contributed by Alaska. Differential Revision: https://developer.blender.org/D13325
2022-03-15Cycles: change Scrambling Distance Multiplier to a soft limitBrecht Van Lommel
This allows users to type in values larger than 1, for use in conjunction with automatic scrambling distance. Contributed by Alaska. Differential Revision: https://developer.blender.org/D13580
2022-03-15Fix T96417: Cycles issue with multiscatter GGX and self intersection avoidanceBrecht Van Lommel
When the light direction is not pointing away from the geometric normal and there is a shadow terminator offset, self intersection is supposed to occur.
2022-03-15Fix some properties missing in the UI for new Curves object typeBrecht Van Lommel
Missed some renames from HAIR to CURVES.
2022-03-15Cleanup: correct unbalanced doxy sectionsCampbell Barton
2022-03-13Cleanup: clang formatAaron Carlisle
2022-03-11Cycles: show viewport hair settings when using CyclesEthan-Hall
Before this patch, users had to switch render engines just to change how the hair should be displayed in solid and material preview viewport shading modes. Differential Revision: https://developer.blender.org/D14290
2022-03-11Cycles: make smart interpolation fallback to cubic for GPUEthan-Hall
Matching CPU and Eevee behavior. Differential Revision: https://developer.blender.org/D14296
2022-03-11Cleanup: use M_PI_2 and M_PI_4 where possibleHallam Roberts
The constant M_PI_4 is added to GLSL to ensure it works there too. Differential Revision: https://developer.blender.org/D14288
2022-03-11Cleanup: fix source typos homogenous->homogeneousBrecht Van Lommel
Contributed by luzpaz. Differential Revision: https://developer.blender.org/D14306