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-11-16Cycles: Fix crash with split branched path tracingMai Lavelle
ShaderData memory was getting clobbered in the branched path code paths. Was caused by 087331c495b04ebd37903c0dc0e46262354cf026
2017-11-09Cycles: Replace __MAX_CLOSURE__ build option with runtime integrator variableMai Lavelle
Goal is to reduce OpenCL kernel recompilations. Currently viewport renders are still set to use 64 closures as this seems to be faster and we don't want to cause a performance regression there. Needs to be investigated. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2775
2017-11-08Code refactor: rename subsurface to local traversal, for reuse.Brecht Van Lommel
2017-11-05Cycles: reduce closure memory usage for emission/shadow shader data.Brecht Van Lommel
With a Titan Xp, reduces path trace local memory from 1092MB to 840MB. Benchmark performance was within 1% with both RX 480 and Titan Xp. Original patch was implemented by Sergey. Differential Revision: https://developer.blender.org/D2249
2017-11-05Code refactor: remove emission and background closures, sum directly.Brecht Van Lommel
2017-10-07Code refactor: make texture code more consistent between devices.Brecht Van Lommel
* Use common TextureInfo struct for all devices, except CUDA fermi. * Move image sampling code to kernels/*/kernel_*_image.h files. * Use arrays for data textures on Fermi too, so device_vector<Struct> works.
2017-10-04Code refactor: zero render buffers outside of kernel.Brecht Van Lommel
This was originally done with the first sample in the kernel for better performance, but it doesn't work anymore with atomics. Any benefit was very minor anyway, too small to measure it seems.
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-10-04Code refactor: add WorkTile struct for passing work to kernel.Brecht Van Lommel
This makes sharing some code between mega/split in following commits a bit easier, and also paves the way for rendering multiple tiles later.
2017-09-28Cycles: reduce subsurface stack memory usage.Brecht Van Lommel
This is done by storing only a subset of PathRadiance, and by storing direct light immediately in the main PathRadiance. Saves about 10% of CUDA stack memory, and simplifies subsurface indirect ray code.
2017-09-21Code cleanup: simplify kernel side work stealing code.Brecht Van Lommel
2017-09-20Cycles: use defensive sampling for picking BSDFs and BSSRDFs.Brecht Van Lommel
For the first bounce we now give each BSDF or BSSRDF a minimum sample weight, which helps reduce noise for a typical case where you have a glossy BSDF with a small weight due to Fresnel, but not necessarily small contribution relative to a diffuse or transmission BSDF below. We can probably find a better heuristic that also enables this on further bounces, for example when looking through a perfect mirror, but I wasn't able to find a robust one so far.
2017-09-20Cycles: slightly improve BSDF sample stratification for path tracing.Brecht Van Lommel
Similar to what we did for area lights previously, this should help preserve stratification when using multiple BSDFs in theory. Improvements are not easily noticeable in practice though, because the number of BSDFs is usually low. Still nice to eliminate one sampling dimension.
2017-09-20Code cleanup: refactor BSSRDF closure sampling, for next commit.Brecht Van Lommel
2017-09-20Code cleanup: remove hack to avoid seeing transparent objects in noise.Brecht Van Lommel
Previously the Sobol pattern suffered from some correlation issues that made the outline of objects like a smoke domain visible. This helps simplify the code and also makes some other optimizations possible.
2017-09-13Code cleanup: store branch factor in PathState.Brecht Van Lommel
2017-09-13Code cleanup: abstract shadow catcher logic more into accumulation code.Brecht Van Lommel
2017-09-13Code cleanup: deduplicate some branched and split kernel code.Brecht Van Lommel
Benchmarks peformance on GTX 1080 and RX 480 on Linux is the same for bmw27, classroom, pabellon, and about 2% faster on fishy_cat and koro.
2017-09-12Cycles: change AO bounces approximation to do more glossy and transmission.Mathieu Menuet
Rather than treating all ray types equally, we now always render 1 glossy bounce and unlimited transmission bounces. This makes it possible to get good looking results with low AO bounces settings, making it useful to speed up interior renders for example. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2818
2017-09-12Cycles: improve sample stratification on area lights for path tracing.Brecht Van Lommel
Previously we used a 1D sequence to select a light, and another 2D sequence to sample a point on the light. For multiple lights this meant each light would get a random subset of a 2D stratified sequence, which is not guaranteed to be stratified anymore. Now we use only a 2D sequence, split into segments along the X axis, one for each light. The samples that fall within a segment then each are a stratified sequence, at least in the limit. So for example for two lights, we split up the unit square into two segments [0,0.5[ x [0,1[ and [0.5,1[ x [0,1[. This doesn't make much difference in most scenes, mainly helps if you have a few large area lights or some types of HDR backgrounds.
2017-09-05Fix T52433: Volume Absorption color tintSergey Sharybin
Need to exit the volume stack when shadow ray laves the medium. Thanks Brecht for review and help in troubleshooting!
2017-09-05Cycles: Cleanup, styleSergey Sharybin
2017-08-24Code cleanup: remove shader context.Brecht Van Lommel
This was needed when we accessed OSL closure memory after shader evaluation, which could get overwritten by another shader evaluation. But all closures are immediatley converted to ShaderClosure now, so no longer needed.
2017-08-22Fix panorama render crash with split kernel, due to incorrect buffer pointer.Brecht Van Lommel
Also some refactoring to clarify variable usage scope.
2017-08-21Fix T52470: cycles OpenCL hair rendering not working after recent changes.Brecht Van Lommel
2017-08-19Code cleanup: move rng into path state.Brecht Van Lommel
Also pass by value and don't write back now that it is just a hash for seeding and no longer an LCG state. Together this makes CUDA a tiny bit faster in my tests, but mainly simplifies code.
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-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-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-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-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-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-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-06-13Cycles: Cleanup, indentationSergey Sharybin
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.
2017-06-10Cycles: Add kernel to enqueue inactive raysMai Lavelle
The queue will be used to make reuse of inactive threads to keep the GPU more busy.
2017-05-19Fix T51537: Light passes are summed twice for split kernel since denoise commitSergey Sharybin
Denoise commit introduced kernel_write_result() which saves light passes, so no need to call both kernel_write_result() and kernel_write_light_passes() from the split kernel. Weirdly enough. kernel_write_result() does not take care about debug passes.
2017-05-16Cycles: Fix building with native only optionMai Lavelle
Approach suggested by Lukas S.
2017-05-11Cycles: fix AO approximation for split kernelHristo Gueorguiev
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-05-05Cycles: Fix access array index of -1 in SSS and volume split kernelsSergey Sharybin
2017-05-05Cycles: Cleanup, indentationSergey Sharybin
2017-05-05Cycles: Split kernel SSS & Volume data definitions cleanupHristo Gueorguiev
2017-05-03Cycles: Split kernel - sort shadersHristo Gueorguiev
Reduce thread divergence in kernel_shader_eval. Rays are sorted in blocks of 2048 according to shader->id. On R9 290 Classroom is ~30% faster, and Pabellon Barcelone is ~8% faster. No sorting for CUDA split kernel. Reviewers: sergey, maiself Reviewed By: maiself Differential Revision: https://developer.blender.org/D2598
2017-05-02Cycles: Branched path tracing for the split kernelMai Lavelle
This implements branched path tracing for the split kernel. General approach is to store the ray state at a branch point, trace the branched ray as normal, then restore the state as necessary before iterating to the next part of the path. A state machine is used to advance the indirect loop state, which avoids the need to add any new kernels. Each iteration the state machine recreates as much state as possible from the stored ray to keep overall storage down. Its kind of hard to keep all the different integration loops in sync, so this needs lots of testing to make sure everything is working correctly. We should probably start trying to deduplicate the integration loops more now. Nonbranched BMW is ~2% slower, while classroom is ~2% faster, other scenes could use more testing still. Reviewers: sergey, nirved Reviewed By: nirved Subscribers: Blendify, bliblubli Differential Revision: https://developer.blender.org/D2611
2017-04-25Workaround for AMD GPU OpenCL compiler.Hristo Gueorguiev