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
2017-08-13Code cleanup: make L_transparent part of PathRadiance.Brecht Van Lommel
2017-08-13Code cleanup: make DebugData part of PathRadiance.Brecht Van Lommel
2017-08-13Code cleanup: make it easier to test only Sobol, CMJ or Pseudorandom.Brecht Van Lommel
2017-08-12Cycles: optimize CPU split kernel data init.Brecht Van Lommel
2017-08-12Code cleanup: remove unused Cycles random number code.Brecht Van Lommel
2017-08-12Code cleanup: fix warning and improve terminology.Brecht Van Lommel
2017-08-11Cycles: Clarify new argument in PathRadianceSergey Sharybin
2017-08-11Fix T52229: Shadow Catcher artifacts when under transparencySergey Sharybin
Added some extra tirckery to avoid background being tinted dark with transparent surface. Maybe a bit hacky, but seems to work fine.
2017-08-09Cycles: Remove ulong usageSergey Sharybin
This is a bit confusing, especially when one mixes OpenCL code where ulong equals to uint64_t with CPU side code where ulong is expected to be something else from the naming. This commit makes it so we use explicit name, common on all platforms.
2017-08-08Cycles: Fix compilation error of filter kernels on 32 bit WindowsSergey Sharybin
We don't enable global SSE optimizations in regular kernel, and we keep those disabled on Linux 32bit. One possible workaround would be to pass arguments by ccl_ref, but that is quite a few of code which better be done accurately.
2017-08-08Cycles: Cleanup, de-duplicate function parameter listSergey Sharybin
Was only needed to sue const reference on CPU. Now it is done using ccl_ref.
2017-08-08Cycles: Add utility macro ccl_refSergey Sharybin
It is defined to & for CPU side compilation, and defined to an empty for any GPU platform. The idea here is to use this macro instead of #ifdef block with bunch of duplicated lines just to make it so CPU code is efficient. Eventually we might switch to references on CUDA as well, but that would require some intensive testing.
2017-08-08Cycles: Pack kernel textures into buffers for OpenCLMai Lavelle
Image textures were being packed into a single buffer for OpenCL, which limited the amount of memory available for images to the size of one buffer (usually 4gb on AMD hardware). By packing textures into multiple buffers that limit is removed, while simultaneously reducing the number of buffers that need to be passed to each kernel. Benchmarks were within 2%. Fixes T51554. Differential Revision: https://developer.blender.org/D2745
2017-08-07Cycles: Cleanup, move curve intersection functions to own fileSergey Sharybin
This way curve file becomes much shorter and it's also easier to write a benchmark application to check performance before/after future changes.
2017-08-07Cycles: Cleanup, trailign whitespaceSergey Sharybin
2017-08-07Cycles: Cleanup, remove bvh prefix from curve functionsSergey Sharybin
Those are nothing to do with BVH, and can be used separately.
2017-08-07Cycles: Fix compilation error on NVidia OpenCL after recent refactorSergey Sharybin
Still need to verify this is proper thing to do for AMD OpenCL. At least now i can compile OpenCL kernel on my laptop with sm21 card.
2017-08-07Fix Cycles shadow catcher objects influencing each other.Brecht Van Lommel
Since all the shadow catchers are already assumed to be in the footage, the shadows they cast on each other are already in the footage too. So don't just let shadow catchers skip self, but all shadow catchers. Another justification is that it should not matter if the shadow catcher is modeled as one object or multiple separate objects, the resulting render should be the same. Differential Revision: https://developer.blender.org/D2763
2017-08-07Cycles: Cleanup, space after keywordSergey Sharybin
2017-08-07Code refactor: use float4 instead of intrinsics for CPU denoise filtering.Brecht Van Lommel
Differential Revision: https://developer.blender.org/D2764
2017-08-07Code refactor: add, remove, optimize various SSE functions.Brecht Van Lommel
* Remove some unnecessary SSE emulation defines. * Use full precision float division so we can enable it. * Add sqrt(), sqr(), fabs(), shuffle variations, mask(). * Optimize reduce_add(), select(). Differential Revision: https://developer.blender.org/D2764
2017-08-07Code refactor: split defines into separate header, changes to SSE type headers.Brecht Van Lommel
I need to use some macros defined in util_simd.h for float3/float4, to emulate SSE4 instructions on SSE2. But due to issues with order of header includes this was not possible, this does some refactoring to make it work. Differential Revision: https://developer.blender.org/D2764
2017-08-07Fix Cycles CUDA adaptive megakernel build error.Brecht Van Lommel
2017-08-05Cycles: CUDA split performance tweaks, still far from megakernel.Brecht Van Lommel
On Pabellon, 25.8s mega, 35.4s split before, 32.7s split after.
2017-08-05Cycles: remove min bounces, modify RR to terminate less.Brecht Van Lommel
Differential Revision: https://developer.blender.org/D2766
2017-08-02Cycles: Support "precompiled" headers in include expansion algorithmSergey Sharybin
The idea here is that it is possible to mark certain include statements as "precompiled" which means all subsequent includes of that file will be replaced with an empty string. This is a way to deal with tricky include pattern happening in single program OpenCL split kernel which was including bunch of headers about 10 times. This brings preprocessing time from ~1sec to ~0.1sec on my laptop.
2017-07-24Fix Cycles multi scatter GGX different render results with Clang and GCC.Brecht Van Lommel
The order of evaluation of function arguments is undefined, and the order was reversed between these compilers. This was causing regressions tests to give different results between Linux and macOS.
2017-07-23Fix T52152: allow zero roughness for Cycles principled BSDF, don't clamp.Brecht Van Lommel
2017-07-23Fix Cycles denoising NaNs with a 1 sample renders.Brecht Van Lommel
This was causing different render results with different compilers. We can't do much useful with 1 sample, but better for debugging.
2017-07-20Fix T52125: principled BSDF missing with macOS OpenCL.Brecht Van Lommel
2017-07-20Cycles: fixed the SM_2x CUDA kernel build that I broke in my previous commitStefan Werner
2017-07-20Fix T52107: Color management difference when using multiple and different ↵Stefan Werner
GPUs together This commit unifies the flattened texture slot names for bindless and regular CUDA textures. Texture indices are now identical across all CUDA architectures, where before Fermi used different indices, which lead to problems when rendering on multi-GPU setups mixing Fermi with newer hardware.
2017-07-18Fix T52021: Shadow catcher renders wrong when catcher object is behind ↵Sergey Sharybin
transparent object Tweaked the path radiance summing and alpha to accommodate for possible contribution of light by transparent surface bounces happening prior to shadow catcher intersection. This commit will change the way how shadow catcher results looks when was behind semi transparent object, but the old result seemed to be fully wrong: there were big artifacts when alpha-overing the result on some actual footage.
2017-07-18Cycles: Remove meaningless camera ray checkSergey Sharybin
In branched path tracing main loop is always a camera ray, with varying number of transparent bounces.
2017-07-12Cycles: Fix comparison in principled BSDFMai Lavelle
Could have lead to black pixels.
2017-07-11Fix T52027: OSL getattribute() crash, when optimizer calls it before rendering.Brecht Van Lommel
2017-07-03Fix T51950: Abnormally long Cycles OpenCL GPU render times with certain ↵Lukas Stockner
panoramic camera settings The problem here was that when a "invalid" path is generated by the panoramic camera, it was tagged as RAY_TO_REGENERATE with the intention of generating a new path in kernel_buffer_update. However, since that state was not handled in kernel_queue_enqueue, kernel_buffer_update did not process the path which resulted in an infinite loop.
2017-07-02Fix T51956: color noise with principled sss, radius 0 and branched path.Brecht Van Lommel
2017-07-02Fix principled BSDF incorrectly missing subsurface component with base color ↵Brecht Van Lommel
black.
2017-06-28Fix T51909: Cycles: Uninitialized closure normals for the Hair BSDFLukas Stockner
As the title says, the normal wasn't set for the Hair BSDF because it wasn't needed before. However, the denoiser uses it to store the feature passes, so it needs to be set now.
2017-06-22Cycles: Fix excessive sampling weight of glossy Principled BSDF componentsLukas Stockner
If there was any specularity in the Principled BSDF, it would get a sampling weight of one regardless of its actual impact. This commit makes Cycles estimate the contribution of the component and adjust the weighting accordingly, which greatly improves the noise characteristics of the Principled BSDF in many cases. Note that this commit might slightly change the brightness of areas when using MultiGGX and high roughnesses, but the new brightness is more accurate and closer to the result of Branched Path Tracing. See T51836 for details. Differential Revision: https://developer.blender.org/D2677
2017-06-22Fix T51836: Cycles: Fix incorrect PDF approximations of the MultiGGX closuresLukas Stockner
The PDF of the MultiGGX sampling is approximated by the singlescattering GGX term as well as a scaled diffuse term that makes up for the energy in the multiscattering component that's missed by GGX. However, there were two problems with the glossy terms: The diffuse term missed a normalization factor, and the singlescattering term was not properly scaled down based on the albedo estimate. The glass term was completely wrong and has been rewritten. It uses the fresnel factor to weight reflection vs. refraction and uses the glossy MultiGGX model for reflection. For refraction, the correct singlescattering term is now used, and a new albedo approximation is used that was derived by evaluating GGX albedo for roughnesses from 0 to 1 and IORs from 1 to 3 and fitting numerical approximations to it. The resulting model has a mean relative error of 9e-5, but could probably be simplified without losing noticable accuracy in the final render. The improved PDFs help with glossy highlights (due to better light sampling vs. closure sampling MIS) and fix the situation described in T51836 where mixing MultiGGX with other closures (as it happens in e.g. the Principled BSDF) causes incorrect darkening.
2017-06-21Fix T51849: change Cycles clearcoat gloss to roughness.Brecht Van Lommel
This is compatible with UE4 and more consistent with specular and transmission roughness, even if it deviates from the original Disney BRDF.
2017-06-14Cycles: Fix typo in commentSergey Sharybin
2017-06-13Cycles: Cleanup, indentationSergey Sharybin
2017-06-13Cycles: Fix compilation error of OpenCL mega kernelSergey Sharybin
Was some mismatch in address space. Seems to be caused by recent additions. Additionally, moved decoupled ray marching functions under ifdef, so they don't try to use malloc() functions. Thanks Mai for testing the patch!
2017-06-11Cycles Denoising: Add more failsafes for invalid pixelsLukas Stockner
Now, when there is no usable neighboring pixel for denoising, the noisy value is preserved instead of producing a NaN. Also, negative results are clamped to zero. Note that there are just workarounds that don't fix the underlying problems, but these issues are very rare and I'm not sure if it's even possible to fix the underlying problems without introducing a significant slowdown or quality decrease in other situations. Because of that and since 2.79 is happening very soon, I just went for these workarounds for now.
2017-06-10Cycles: Selectively include denoising in kernelSergey Sharybin
2017-06-10Cycles: Pass all buffers to each kernel call for OpenCLMai Lavelle
Technically not passing all buffers used by a kernel is undefined behavior. We haven't had any issues with this so far on AMD or Nvidia, but it's known to be a problem with Intel and we received a report from AMD that this is a problem on newer hardware, so we need to make this change at some point. Unfortunately there a cost to being correct, about 5% for the benchmark scenes. For low sample counts it's even worse, I've seen up to 50% slowdown. For the latter case I think adjusting tile updating logic can help, but not sure what that would look like yet (it would be just a few lines change however).
2017-06-10Cycles: Faster split branched path tracing by sharing samples with inactive ↵Mai Lavelle
threads Unlike regular path tracing, branched path tracing is usually used with lower sample counts, at least for primary rays. This means that are less samples for the GPU to work on in parallel and rendering is slower. As there is less work overall there is also more inactive threads during rendering with BPT. This patch makes use of those inactive rays to render branched samples in parallel with other samples. Each thread that is preparing for a branched sample will attempt to find an inactive thread and if one is found the state for the sample is copied to that thread. Potentially, if there are enough inactive threads, 100s of branched samples could be generated from the same originating thread and ran in parallel giving large speed ups. Gives 70% faster render for pavillion midday scene. 20-60% faster on BMW with car paint replaced with SSS/volumes.