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
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-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-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-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-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-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-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-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: fix source typos homogenous->homogeneousBrecht Van Lommel
Contributed by luzpaz. Differential Revision: https://developer.blender.org/D14306
2022-03-10Fix T93710: Artifacts denoising hi-res images using OPtiXSergey Sharybin
Caused by an integer overflow in the tiling utilities of OptiX SDK. Seems for now it's easier to copy and modify code to our sources so that we don't need to bump SDK version requirement (which might lead to an increased driver requirement as well). There are still some fixes needed from a newer driver to have such denoising to work properly: Windows requires 511.79, Linux 510.54. Thanks Patrick for investigation! Differential Revision: https://developer.blender.org/D14300
2022-03-10Cleanup: spelling in comments & some minor clarificationsCampbell Barton
2022-03-09Fix T96165: Incorrect render of barcelone scene with BVH2Sergey Sharybin
Fix T95462: Partly transparent objects appear to glow in the dark The issue was caused by incorrect check for exceeded number of transparent bounces: the same maximum distance was used for picking up N closest intersections and counting overall intersections count. Now made it so intersection count is using ray distance which matches the way how Embree and OptiX implementation works. Benchmark result: {F12907888} There is no big time difference in the pabellon scene. The Victor scene timing doesn't seem to be very reliable as the variance in time across different benchmark runs is quite high. Differential Revision: https://developer.blender.org/D14280
2022-03-08Fix wrong edge crease validity check in the Cycles Alembic proceduralKévin Dietrich
2022-03-07Shader Nodes: add Alpha output to Object Info nodeEthan-Hall
An alpha component can be specified for an object's color. This adds an alpha socket to the object info shader node allowing for the alpha component of the object's color to be accessed in the shader editor. Differential Revision: https://developer.blender.org/D14141
2022-03-07Cleanup: fix various typosBrecht Van Lommel
Contributed by luzpaz. Differential Revision: https://developer.blender.org/D14203
2022-03-04Cleanup: unused Python variables & importsCampbell Barton
2022-03-04Cleanup: spelling in comments, function nameCampbell Barton
2022-03-03Merge branch 'blender-v3.1-release'Sergey Sharybin
2022-03-03Fix T96139: Cycles doesn't warn if the render is pausedSergey Sharybin
Caused by 6ec83afb1db8. Technically, a regression since 3.0. Differential Revision: https://developer.blender.org/D14239
2022-03-03Merge branch 'blender-v3.1-release'Brecht Van Lommel
2022-03-03Fix Cycles hang in classroom scene with upcomping AMD driver version 22.10Brecht Van Lommel
This is a workaround until there is a fix in the HIP compiler or driver. Differential Revision: https://developer.blender.org/D14232
2022-03-01Merge branch 'blender-v3.1-release'Germano Cavalcante
2022-03-01Fix T92980: missing Cycles video texture update with persistent dataBrecht Van Lommel
2022-03-01Cycles: Hide MetalRT checkbox for AMD GPUsMichael Jones
This patch hides the MetalRT checkbox for AMD GPUs, pending fixes for MetalRT argument encoding on AMD. Reviewed By: brecht Differential Revision: https://developer.blender.org/D14175