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
2014-12-25Cleanup: Typo fixes for comments.Thomas Dinges
2014-12-25Cycles: Expose QBVH on/off switch to the UI.Thomas Dinges
We might remove this again in the future, but for testing purposes during the release cycle, this will be useful. The setting defaults to QBVH, and can be found in the Performance panel.
2014-12-25Cycles: Correction for node tail copy on packing BVHSergey Sharybin
This is harmless for now because tail of the node is zero in there, but better to fix it early so in the case of extending BVH nodes this code doesn't give issues.
2014-12-25Cycles: Enable QBVH optimization structure for SSE2 CPUsSergey Sharybin
This commit enables QBVH optimization structure automatically if rendering with CPU and SSE2 support is detected. This brings render time of agent shot back to the speed it used to be before the watertight intersections commit, single koro and sponza scenes are about 7% faster here.
2014-12-25Cycles: Implement QBVH tree traversalSergey Sharybin
This commit implements traversal for QBVH tree, which is based on the old loop code for traversal itself and Embree for node intersection. This commit also does some changes to the loop inspired by Embree: - Visibility flags are only checked for primitives. Doing visibility check for every node cost quite reasonable amount of time and in most cases those checks are true-positive. Other idea here would be to do visibility checks for leaf nodes only, but this would need to be investigated further. - For minimum hair width we extend all the nodes' bounding boxes. Again doing curve visibility check is quite costly for each of the nodes and those checks returns truth for most of the hierarchy anyway. There are number of possible optimization still, but current state is good enough in terms it makes rendering faster a little bit after recent watertight commit. Currently QBVH is only implemented for CPU with SSE2 support at least. All other devices would need to be supported later (if that'd make sense from performance point of view). The code is enabled for compilation in kernel. but blender wouldn't use it still.
2014-12-25Cycles: Store proper empty boundbox for missing child nodes in QBVHSergey Sharybin
The idea is to make sure those childs would never be intersected with a ray in order to make it so kernel never worries about number of child nodes.
2014-12-25Cycles: Code cleanup, de-duplicate definition of FEATURESergey Sharybin
Previously every BVH traversal file was defining macro to check which features should be compiled in, now this macro is defined in the parent header.
2014-12-25Cycles: Rework BVH functions calls a little bitSergey Sharybin
Basic idea is to allow multiple implementation per feature-set, meaning this commit tries to make it easier to hook new algorithms for BVH traversal.
2014-12-25Cycles: Add some utility functions and structuresSergey Sharybin
Most of them are not currently used but are essential for the further work. - CPU kernels with SSE2 support will now have sse3b, sse3f and sse3i - Added templatedversions of min4, max4 which are handy to use with register variables. - Added util_swap function which gets arguments by pointers. So hopefully it'll be a portable version of std::swap.
2014-12-25Cycles: Implement watertight ray/triangle intersectionSergey Sharybin
Using this paper: Sven Woop, Watertight Ray/Triangle Intersection http://jcgt.org/published/0002/01/05/paper.pdf This change is expected to address quite reasonable amount of reports from the bug tracker, plus it might help reducing the noise in some scenes. Unfortunately, it's currently about 7% slower than the previous solution with pre-computed triangle plane equations, but maybe with some smart tweaks to the code (tests reshuffle, using SIMD in a nice way or so) we can avoid the speed regression. But perhaps smartest thing to do here would be to change single triangle / ray intersection with multiple triangles / ray intersections. That's how Embree does this and it's watertight single ray intersection is not any faster that this. Currently only triangle intersection is modified accordingly to the paper, in the future we would also want to modify the node / ray intersection. Reviewers: brecht, juicyfruit Subscribers: dingto, ton Differential Revision: https://developer.blender.org/D819
2014-12-25Cycles: Optimize storage of QBVH node by one float4Sergey Sharybin
The idea is to store visibility flags for leaf nodes only since visibility check for inner nodes costs too much for QBVH hence it is not optimal to perform. Leaf QBVH nodes have plenty of space to store all sort of flags, so we can make nodes one element smaller, saving noticeable amount of memory.
2014-12-25Cycles; Code cleanup, make it more obvious what #endif belongs toSergey Sharybin
2014-12-25Cycles: Make it more clear offsets in BVH constructionSergey Sharybin
Previously offsets were calculated based on the BVH node size, which is wrong and real PITA in cases when some extra data is to be added into (or removed from) the node. Now use offsets which are not calculated form the node size.
2014-12-25Cycles: Replace magic constant in the code with actual node sizeSergey Sharybin
2014-12-25Cycles: Avoid over-allocation in packing BVH instancesSergey Sharybin
This solves quite an over-allocation in BVH instances packing code, unfortunately, it's not a magic bullet to solve memory bump caused by the recent QBVH changes. For that we'll likely need to decouple storage for leaf and inner nodes. However, it's not really clear for now if it's something important since that'd still be just a fraction of memory comparing to all the hi-res textures.
2014-12-25Cycles: Implement refit_nodes for QBVHSergey Sharybin
Title says it all, quite straightforward implementation. Would only mention that there's a bit of code duplication around packing node into pack.nodes. Trying to de-duplicate it ends up in quite hairy code (like functions with loads of arguments some of which could be NULL in certain circumstances etc..). Leaving solving this duplication for later.
2014-12-25Cycles: Use proper node counter to allocate QBVH nodesSergey Sharybin
Before all the nodes were counted and allocated, leading to situations when bunch of allocated memory is not used because reasonable amount of nodes are simply ignored.
2014-12-25Cycles: Don't do node visibility check in subsurface and volume traversalSergey Sharybin
Visibility flags are set to all visibility anyway, So there was no reason to perform that test. TODO: We need to investigate if having primitive intersection functions which doesn't do visibility check gives any speedup here as well.
2014-12-25Cycles: Move triangle intersection functions into own fileSergey Sharybin
This way extending intersection routines with some pre-calculation step wouldn't explode the single file size, hopefully keeping them all in a nice maintainable state.
2014-12-25Cycles: Optimize vector math node without links to single values.Thomas Dinges
2014-12-18Cycles: Do some logging when motion is detected in the sceneSergey Sharybin
2014-12-18Cycles: Add missing entries in the Integrator constructor and some updatesThomas Dinges
to the XML API. (Changes from the standalone repo)
2014-12-16Fix T42888: Separate and Combine HSV distorts the hue valueSergey Sharybin
These nodes were assuming sRGB input/output which is for sure wrong for the shader pipeline which works in the linear space. So now conversion to/from linear space happens in these nodes which makes them making sence in the shader context but which might change look and feel of existing scenes.
2014-12-11Cycles: Fix more wrong usages of RNA_id_pointer_createSergey Sharybin
Title says it all, just be more careful in the future.
2014-12-11Fix T42829: Cycles crash rendering when file is saved to specific locationSergey Sharybin
The issue was caused by the way how RNA pointer was created for the bMain: namely Cycles was using RNA_id_pointer_create to create the pointer, which would then try to refine the poniter based on the ID type. This is just wrong and worked so far just because of co-incident, with the file path from the bug report first letters in the ID name happened to be NT which corresponds to NodeTree, and for sure refining such pointer will fail. Simple solution -- use proper way to create RNA pointer for non-ID block.
2014-12-10Cycles: Fix difference between SVM and OSL implementation of Normal nodeSergey Sharybin
SVM was normalizing the input normal, OSL did not. This lead to render result differences across this shading systems.
2014-12-10Fix T42818: Cycles SSS passes are incorrect for SSS size of 0Sergey Sharybin
This was caused by some internal optimization which evaluated SSS with size of zero as BSDF but used different ID so the evaluation result didn't appear in regular diffuse pass. This lead to situation when SSS data was nowhere stored if the size was zero. Now SSS with zero size and close-to-zero sizes will be handled in the same way from the passes point of view.
2014-12-09Cycles: Code cleanup, typoSergey Sharybin
2014-12-08Cycles: Fix compilation error with MinGW and logging enabledSergey Sharybin
2014-12-08Docs: reference the new manualCampbell Barton
2014-12-08Cleanup: spellingCampbell Barton
2014-12-05Cycles: Report error via the new engine APISergey Sharybin
This way CUDA errors are visible in the image info line, which makes things to behave the same across viewport and final rendering. That's right, we've got error reported via reports and info line now. This is based on the feedback from our gooseberry team.
2014-12-05Cycles: Report error to the blender using report APISergey Sharybin
This way when something goes wrong in Cycles (for example out of VRAM, timelimit launching the kernel etc) we'll have a nice report in the Info space header. Sure it'll be nice to have mention of error in the image editor's information line, but that's for the future. This fixes T42747: "CUDA error" appears only momentarily, then disappears
2014-12-05Cycles: Add dedicated Progress::set_error() callSergey Sharybin
Currently it acts the same as set_cancel(), but this way we're able to distinguish situations when rendering was aborted by user demand (for example pressing Esc in standalone renderer) or if something went horribly wrong (for example out of VRAM error).
2014-12-05Cycles: Early output from Scene::device_update when device error occursSergey Sharybin
This way for example we wouldn't wait a fortune while BVH is building after GPU run out of memory when loading images just to see the render failure message.
2014-12-05Cycles: Code cleanup, whitespaceSergey Sharybin
2014-12-04Cycles: Fix compilation error after recent logging changesSergey Sharybin
Forbid OSL from polluting current conext with obscure stuff from windows.h, it's not useful and unhealthy anyway. Maybe we sohuld also forbid using abbreviated Glog constants as well tho.
2014-12-03Cycles: Synchronize SCons with CMake in regard of loggingSergey Sharybin
2014-12-03Cycles: Support logging when building with SConsSergey Sharybin
Basically, title says ti all, the option is called WITH_BF_CYCLES_LOGGING
2014-12-03Cycles: Remove workaround in ShaderClosureSergey Sharybin
Since the aligned allocation of shader closures in OSL memory pool this workaround is no longer needed. Also put a comment which describes the desired layout of the structure so array of shader closures is all nicely aligned.
2014-12-03Cycles: Use 16 bytes aligned closures in OSLSergey Sharybin
This solves bugs like T42210 which are caused by compiler being smart and using some SSE instructions to operate with closure classes, which was failing because those classes are not allocated by the regular allocator but allocated in memory pool in OSL. With newer versions of OSL it is now possible to force closure classes being aligned to a given boundary and this commit uses this new functionality. Unfortunately, it means we're no longer compatible with older versions of OSL, only latest git version from upstream and our branch at github are supported: https://github.com/Nazg-Gul/OpenShadingLanguage/tree/blender-fixes For OSX and Windows it's not an issue because libraries are already updated there, Linux users would need to run install_deps script.
2014-12-02Cycles: Remove workaround for missing sm_52 kernel, now we require it for ↵Thomas Dinges
Maxwell cards.
2014-12-02Cycles: Tweak to the include paths after recent atomics changeSergey Sharybin
Who could knew that include directories are not inherited in scons..
2014-12-02Cycles: Use lock in the memory statisticsSergey Sharybin
CPU rendering is allowed to allocate memory from multiple threads, which means statistics need to be avare of this.
2014-11-28Cycles: Only report exporting curves if there are particle systems on the objectSergey Sharybin
2014-11-28Cycles: Code cleanup, remove dead codeSergey Sharybin
2014-11-24Cycles: Speedup BVH build for certain compilersSergey Sharybin
The issue was noticed with gcc-4.7 (used by the release build environment) which didn't generate optimal enough code for BVH references swap. Seems it looked up for the assign operator for each of the reference structure members even though nothing special was required for assignment. Forcing compiler to use simple memory copy gives speedup of like 2-3 times. The issue doesn't happen with OSX's clang and new gcc-4.9, but since we're gonna to stick to gcc-4.7 for official releases for quite some time still it's nice to have performance issues resolved for all the compilers. Didn't put the code into #ifdef so if in the future some issues appears with alignment or assignment which need to happen as an operator we notice this earlier.
2014-11-24Cycles: Log time spent on the BVH buildSergey Sharybin
2014-11-22Cycles UI: Several fixes for recent additions...Thomas Dinges
* Alpha Property was removed (Fix T42690) * Some tweaks to make the panel look better again. * Use abreviated form "Multiple Importance" everywhere, for consistency.
2014-11-21Cycles: support for specular color in solid shading mode, available inAntony Riakiotakis
the material panel. Patch by Phillipp Oeser (D62) with some minor modifications, thanks!