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-03-24Cycles: Correct isfinite check used in integratorSergey Sharybin
Use fast-math friendly version of this function. We should probably avoid unsafe fast math, but this is to be done with real care with all the benchmarks properly done. For now comitting much safer fix.
2017-03-23Cycles: Remove old non-optimized triangle intersection functionSergey Sharybin
It is unused now and if we want similar function we should use Pluecker intersection which is same performance with SSE optimization but which is more watertight.
2017-03-23Cycles: Fix speed regression on GPUSergey Sharybin
Avoid construction of temporary array and make utility function force-inlined. Additionally avoid calling float4_to_float3 twice. This brings render times to the same values as before current patch series.
2017-03-23Cycles: Move watertight triangle intersection to an utility fileSergey Sharybin
This way the code can be reused more easily.
2017-03-23Cycles: Move triangle intersection precalc to an util fileSergey Sharybin
This is a preparation work for the followup commit which wil l move remaining parts of Woop intersection logic to an utility file. Doing it as a separate commit to keep changes more atomic and easier to bisect when/if needed.
2017-03-23Cycles: Cleanup, move utility function to utility fileSergey Sharybin
Was an old TODO, this function is handy for some math utilities as well.
2017-03-23Cycles: Cleanup, code style and commentsSergey Sharybin
2017-03-23Cycles: Move intersection math to own header fileSergey Sharybin
There are following benefits: - Modifying intersection algorithm will not cause so much re-compilation. - It works around header dependency hell and allows us to use vectorization types much easier in there.
2017-03-23Cycles: Cleanup, remove unused functionSergey Sharybin
2017-03-11Fix T50888: Numeric overflow in split kernel state buffer size calculationMai Lavelle
Overflow led to the state buffer being too small and the split kernel to get stuck doing nothing forever.
2017-03-11Fix OpenCL warnings about doubles on some platforms.Brecht Van Lommel
2017-03-09Cycles: add single program debug option for split kernelHristo Gueorguiev
Single program generally compiles kernels faster (2-3 times), loads faster, takes less drive space (2-3 times), and reduces the number of cached kernels.
2017-03-08Cycles: Use 1-based line number for #line directivesSergey Sharybin
AMD CPU platform was complaining about #line 0 directives in the code.
2017-03-08Cycles: CUDA implementation of split kernelMai Lavelle
2017-03-08Cycles: CPU implementation of split kernelMai Lavelle
2017-03-08Cycles: Report device maximum allocation and detected global sizeSergey Sharybin
2017-03-08Cycles: OpenCL split kernel refactorMai Lavelle
This does a few things at once: - Refactors host side split kernel logic into a new device agnostic class `DeviceSplitKernel`. - Removes tile splitting, a new work pool implementation takes its place and allows as many threads as will fit in memory regardless of tile size, which can give performance gains. - Refactors split state buffers into one buffer, as well as reduces the number of arguments passed to kernels. Means there's less code to deal with overall. - Moves kernel logic out of OpenCL kernel files so they can later be used by other device types. - Replaced OpenCL specific APIs with new generic versions - Tiles can now be seen updating during rendering
2017-03-08Cycles: Add more atomic operationsMai Lavelle
2017-03-06Cycles: Fix strict -Wpedantic warnings with GCCSergey Sharybin
Patch by Stefan Werner, thanks!
2017-02-28Cleanup: Grey --> GrayAaron Carlisle
2017-02-24Cycles: Fix compilation warning with CUDA on OSXSergey Sharybin
2017-02-23Cycles: Fix compilation error on 32bit LinuxSergey Sharybin
2017-02-23Cycles: Fix wrong render results with texture limit and half-float texturesSergey Sharybin
2017-02-23Cycles: Add utility function to convert float to halfSergey Sharybin
handles overflow and underflow, but not NaN/inf.
2017-01-23Cycles: Update current Cycles versionSergey Sharybin
2017-01-20Cycles: Fix compilation error on with older GCCSergey Sharybin
Hopefully it works on all platforms now.
2017-01-19Cycles: Add fast-math safe isnan and isfiniteSergey Sharybin
Currently unused, but might become really handy in the future.
2017-01-19Cycles: Remove using namespace hellSergey Sharybin
Please NEVER EVER use such a statement, it's only causing HUGE issues. What is even worse: it's not always possible to immediately see that the hell is coming from such a statement. There is still some statements in the existing code, will leave those for a later cleanup.
2016-12-03Cycles: Refactor Progress system to provide better estimatesLukas Stockner
The Progress system in Cycles had two limitations so far: - It just counted tiles, but ignored their size. For example, when rendering a 600x500 image with 512x512 tiles, the right 88x500 tile would count for 50% of the progress, although it only covers 15% of the image. - Scene update time was incorrectly counted as rendering time - therefore, the remaining time started very long and gradually decreased. This patch fixes both problems: First of all, the Progress now has a function to ignore time spans, and that is used to ignore scene update time. The larger change is the tile size: Instead of counting samples per tile, so that the final value is num_samples*num_tiles, the code now counts every sample for every pixel, so that the final value is num_samples*num_pixels. Along with that, some unused variables were removed from the Progress and Session classes. Reviewers: brecht, sergey, #cycles Subscribers: brecht, candreacchio, sergey Differential Revision: https://developer.blender.org/D2214
2016-12-02Cycles: Add AVX intrinsics helpersSergey Sharybin
They are defined for MSVC but seems to be missing in GCC and CLang-3.8. Maybe some further tweaks to policy when to define those functions is needed, but should be fine for now.
2016-12-02Cycles: Disable AVX2 crash workaroundsSergey Sharybin
I can no longer reproduce crash with neither of the files where the crash was originally visible. This is something where other changes (light threshold, sampling) had an effect and made code to work as it is supposed to. Could have been optimizator issue or something like that. Let's see if we hit same issue again.
2016-11-23Cycles: Fix strict compilation warningsSergey Sharybin
2016-11-22Fix T50034: Blender changes processor affinity unauthorizedSergey Sharybin
2016-11-22Cycles: Fix re-definition of some functions on x32 archSergey Sharybin
2016-11-22Cycles: Another attempt to fix compilation on 32bit LinuxSergey Sharybin
2016-11-22Cycles: Attempt to fix 32bit buildbot builds after recent commitSergey Sharybin
2016-11-22Cycles: Implement texture size limit simplify optionSergey Sharybin
Main intention is to give some quick way to control scene's memory usage by clamping textures which are too big. This is really handy on the early production stages when you first create really nice looking hi-res textures and only when it all works and approved start investing time on optimizing your scene. This is a new option in Scene Simplify panel and it acts as following: when texture size is bigger than the given value it'll be scaled down by half for until it fits into given limit. There are various possible improvements, such as: - Use threaded scaling using our own task manager. This is actually one of the main reasons why image resize is manually-implemented instead of using OIIO's resize. Other reason here is that API seems limited to construct 3D texture description easily. - Vectorization of uchar4/float4/half4 textures. - Use something smarter than box filter. Was playing with some other filters, but not sure they are really better: they kind of causes more fuzzy edges. Even with such a TODOs in the code the option is already quite useful. Reviewers: brecht Reviewed By: brecht Subscribers: jtheninja, Blendify, gregzaal, venomgfx Differential Revision: https://developer.blender.org/D2362
2016-11-15Atomics: Make naming more obvious about which value is being returnedSergey Sharybin
2016-11-12Fix Cycles OSL compilation based on modified time not working.Brecht Van Lommel
2016-10-30Cycles: Initialize the RNG state from the kernel instead of the hostLukas Stockner
This allows to save a memory copy, which will be particularly useful for network rendering. Reviewers: sergey, brecht, dingto, juicyfruit, maiself Differential Revision: https://developer.blender.org/D2323
2016-10-30Cycles: Add optional probabilistic termination of light samples based on ↵Lukas Stockner
their expected contribution In scenes with many lights, some of them might have a very small contribution to some pixels, but the shadow rays are traced anyways. To avoid that, this patch adds probabilistic termination to light samples - if the contribution before checking for shadowing is below a user-defined threshold, the sample will be discarded with probability (1 - (contribution / threshold)) and otherwise kept, but weighted more to remain unbiased. This is the same approach that's also used in path termination based on length. Note that the rendering remains unbiased with this option, it just adds a bit of noise - but if the setting is used moderately, the speedup gained easily outweighs the additional noise. Reviewers: #cycles Subscribers: sergey, brecht Differential Revision: https://developer.blender.org/D2217
2016-10-29Cycles: Implement texture coordinates for Point, Spot and Area LampsLukas Stockner
When using the Normal output of the Texture Coordinate node on Point and Spot lamps, the coordinates now depend on the rotation of the lamp. On Area lamps, the Parametric output of the Geometry node now returns UV coordinates on the area lamp. Credit for the Area lamp part goes to Stefan Werner (from D1995).
2016-10-27Cycles: More workarounds for weird crashes on AVX2Sergey Sharybin
Oh man, is it a compiler bug? Is it something we do stupid? For now more crap to prevent crashes. During the conference will talk to Maxyn about how can we troubleshoot such weird issues.
2016-10-26Cycles: Another attempt to fix crashes on AVX2 processorsSergey Sharybin
Basically don't use rcp() in areas which seems to be critical after second look. Also disabled some multiplication operators, not sure yet why they might be a problem. Tomorrow will be setting up a full test with all cases which were buggy in our farm to see if this fix is complete.
2016-10-26Cycles: Completely disable transform SSE for nowSergey Sharybin
Was causing issues on another frame. On a tight schedule, disabling for now so artists are happy. Still looking into root of the issue!
2016-10-26Cycles: Fix crashes after recent optimization commitsSergey Sharybin
There is some precision issues for big magnitude coordinates which started to give weird behavior of release builds. Some weird memory usage in BVH which is tricky to nail down because only happens in release builds and GDB reports all variables as optimized out when trying to use RelWithDebInfo. There are two things in this commit: - Attempt to make vectorized code closer to original one, hoping that it'll eliminate precision issue. This seems to work for transform_point(). - Similar trick did not work for transform_direction() even tho absolute error here is much smaller. For now disabled that function, need a more careful look here.
2016-10-25Cycles: BVH-related SSE optimizationSergey Sharybin
Several ideas here: - Optimize calculation of near_{x,y,z} in a way that does not require 3 if() statements per update, which avoids negative effect of wrong branch prediction. - Optimization of direction clamping for BVH. - Optimization of point/direction transform. Brings ~1.5% speedup again depending on a scene (unfortunately, this speedup can't be sum across all previous commits because speedup of each of the changes varies from scene to scene, but it still seems to be nice solid speedup of few percent on Linux and bigger speedup was reported on Windows). Once again ,thanks Maxym for inspiration! Still TODO: We have multiple places where we need to calculate near x,y,z indices in BVH, for now it's only done for main BVH traversal. Will try to move this calculation to an utility function and see if that can be easily re-used across all the BVH flavors.
2016-10-25Cycles: Implement SSE-optimized path of util_max_axis()Sergey Sharybin
The idea here is to avoid if statements which could cause wrong branch prediction. Gives a bit of measurable speedup up to ~1%. Still nice :) Inspired by Maxym Dmytrychenko, thanks!
2016-10-24Cycles: Fix static initialization order fiascoSergey Sharybin
Initialization order of global stats and node types was not strictly defined and it was possible to have node types initialized first and stats after that. This will zero out memory which was allocated from the statistics causing assert failure when de-initializing node types.
2016-10-14Cycles: Disable optimization of operator / for float3Sergey Sharybin
This was giving some speedup but made intersection tests to fail from watertight point of view. Needs deeper investigation, but need to quickly get it fixed for the studio.