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
2018-02-09Cycles: random walk subsurface scattering.Brecht Van Lommel
It is basically brute force volume scattering within the mesh, but part of the SSS code for faster performance. The main difference with actual volume scattering is that we assume the boundaries are diffuse and that all lighting is coming through this boundary from outside the volume. This gives much more accurate results for thin features and low density. Some challenges remain however: * Significantly more noisy than BSSRDF. Adding Dwivedi sampling may help here, but it's unclear still how much it helps in real world cases. * Due to this being a volumetric method, geometry like eyes or mouth can darken the skin on the outside. We may be able to reduce this effect, or users can compensate for it by reducing the scattering radius in such areas. * Sharp corners are quite bright. This matches actual volume rendering and results in some other renderers, but maybe not so much real world objects. Differential Revision: https://developer.blender.org/D3054
2018-02-04msvc: Use source folder structure for project file.Ray Molenkamp
This patch changes the huge list of projects in visual studio into a nice tree matching the source folder structure. see D2823 for details. Differential Revision: http://developer.blender.org/D2823
2018-02-01Cycles: Attempt to fix 32 bit linux compilationSergey Sharybin
2018-02-01Cycles: Fix for non-vectorized version of bitscan()Sergey Sharybin
It was doing bit search in an opposite direction comparing to a vectorized version.
2018-01-29Fix Cycles viewport render not updating when tweaking displacement shader.Brecht Van Lommel
This was disabled to avoid updating the geometry every time when the material includes displacement, because there was no way to distinguish between surface shader and displacement updates. As a solution, we now compute an MD5 hash of the nodes linked to the displacement socket, and only update the mesh if that changes. Differential Revision: https://developer.blender.org/D3018
2018-01-26Code cleanup: simpler and faster detection of BVH refit.Brecht Van Lommel
2018-01-22Cycles: Replace use_qbvh boolean flag with an enum-based propertySergey Sharybin
This was we can introduce other types of BVH, for example, wider ones, without causing too much mess around boolean flags. Thoughs: - Ideally device info should probably return bitflag of what BVH types it supports. It is possible to implement based on simple logic in device/ and mesh.cpp, rest of the changes will stay the same. - Not happy with workarounds in util_debug and duplicated enum in kernel. Maybe enbum should be stores in kernel, but then it's kind of weird to include kernel types from utils. Soudns some cyclkic dependency. Reviewers: brecht, maxim_d33 Reviewed By: brecht Differential Revision: https://developer.blender.org/D3011
2018-01-19Cycles: Make it more proper check on vectorization flags from DebugFlagsSergey Sharybin
Mimics to checks in system_cpu_support() checks.
2018-01-19Cycles: Cleanup, stop using debug flags in system utilitiesSergey Sharybin
Debug flags are to be controlling render behavior, nothing to do with low level system utilities. it was simple to hack, but logically is wrong. Lets do things where they are supposed to be done!
2018-01-19Cycles: Remove unneeded include statementsSergey Sharybin
Also try to move them from headers to implementation files as much as possible.
2018-01-19Fix T53830: Cycles OpenCL debug assert on macOS,Brecht Van Lommel
This was probably harmless besides some unnecessary memory usage due to aligning allocations too much.
2018-01-11Cycles: support animated object scale in motion blur.Stefan Werner
This was disabled previously due to CUDA compiler bugs, see T32900. Differential Revision: https://developer.blender.org/D2937
2018-01-03Cycles: CUDA support for rendering scenes that don't fit on GPU.Brecht Van Lommel
In that case it can now fall back to CPU memory, at the cost of reduced performance. For scenes that fit in GPU memory, this commit should not cause any noticeable slowdowns. We don't use all physical system RAM, since that can cause OS instability. We leave at least half of system RAM or 4GB to other software, whichever is smaller. For image textures in host memory, performance was maybe 20-30% slower in our tests (although this is highly hardware and scene dependent). Once other type of data doesn't fit on the GPU, performance can be e.g. 10x slower, and at that point it's probably better to just render on the CPU. Differential Revision: https://developer.blender.org/D2056
2017-11-30Cycles: Improve denoising speed on GPUs with small tile sizesLukas Stockner
Previously, the NLM kernels would be launched once per offset with one thread per pixel. However, with the smaller tile sizes that are now feasible, there wasn't enough work to fully occupy GPUs which results in a significant slowdown. Therefore, the kernels are now launched in a single call that handles all offsets at once. This has two downsides: Memory accesses to accumulating buffers are now atomic, and more importantly, the temporary memory now has to be allocated for every shift at once, increasing the required memory. On the other hand, of course, the smaller tiles significantly reduce the size of the memory. The main bottleneck right now is the construction of the transformation - there is nothing to be parallelized there, one thread per pixel is the maximum. I tried to parallelize the SVD implementation by storing the matrix in shared memory and launching one block per pixel, but that wasn't really going anywhere. To make the new code somewhat readable, the handling of rectangular regions was cleaned up a bit and commented, it should be easier to understand what's going on now. Also, some variables have been renamed to make the difference between buffer width and stride more apparent, in addition to some general style cleanup.
2017-11-29Cycles: improve triangle intersection performance.Maxym Dmytrychenko
Reduces render time by about 1-2% in benchmark scenes. Differential Revision: https://developer.blender.org/D2911
2017-11-14Cycles: Refactor closure roughness detection to fix a potential bug with ↵Lukas Stockner
Denoising of specular shaders
2017-11-13Cycles: Fix compilation error of standalone applicationSergey Sharybin
2017-11-13Cycles: Fix compilation error with OIIO compiled against system PugiXMLSergey Sharybin
2017-11-10Cycles: Fix compilation error with latest OIIOSergey Sharybin
There was some changes about namespaces, which causes ambiguities. Replaces using namespace with an explicit symbols we need. Is good idea to NOT pull in the whole namespace anyway!
2017-10-31Cycles: Bump version number to 1.9.0Sergey Sharybin
This matches Blender Release 2.79.
2017-10-24Code refactor: move more memory allocation logic into device API.Brecht Van Lommel
* Remove tex_* and pixels_* functions, replace by mem_*. * Add MEM_TEXTURE and MEM_PIXELS as memory types recognized by devices. * No longer create device_memory and call mem_* directly, always go through device_only_memory, device_vector and device_pixels.
2017-10-21Code refactor: avoid some unnecessary device memory copying.Brecht Van Lommel
2017-10-08Cycles: OpenCL bicubic and tricubic texture interpolation support.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-05Fix T53001: more workarounds for crash in AMD compiler with recent drivers.Brecht Van Lommel
2017-09-20Fix T52368: Cycles OSL trace() failing on Windows 32 bit.Brecht Van Lommel
2017-09-04Cycles: Fix compilation warningSergey Sharybin
2017-08-29Fix Cycles Windows render errors with BVH2 CPU rendering.Brecht Van Lommel
One problem is that it was always using __mm_blendv_ps emulation even if the instruction was supported. The other that the emulation function was wrong. Thanks a lot to Ray Molenkamp for tracking this one down.
2017-08-25Cycles: Add utility function to query current value of scoped timerSergey Sharybin
2017-08-24Cycles: FIx issue with -0 being considered a non-finite valueSergey Sharybin
2017-08-23Fix implementation of atomic update max and move to a central locationMai Lavelle
While unlikely to have had any serious effects because of limited use, the previous implementation was not actually atomic due to a data race and incorrectly coded CAS loop. We also had duplicates of this code in a few places, it's now been moved to a single location with all other atomic operations.
2017-08-21Cycles: reorganize Performance panel layout, move viewport BVH type to debug.Brecht Van Lommel
2017-08-19Fix T52443: Cycles OpenCL build error after recent mesh lights changes.Brecht Van Lommel
2017-08-12Fix T52372: CUDA build error after recent changes.Brecht Van Lommel
2017-08-12Fix T52368: OSL trace() crash after recent changes.Brecht Van Lommel
2017-08-11Fix T52322: denoiser broken on Windows after recent changes.Brecht Van Lommel
It's not clear why this only happened on Windows, but the code was wrong and should do a bitcast here instead of conversion.
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-07Fix Windows build errors with recent Cycles SIMD refactoring.Brecht Van Lommel
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-03Cycles: Extra tweaks to performance of header expansionSergey Sharybin
Two main things here: 1. Replace all unsafe for #line directive characters into a single loop, avoiding multiple iterations and multiple temporary strings created. 2. Don't merge token char by char but calculate start and end point and then copy all substring at once. This gives about 15% speedup of source processing time. At this point (with all previous commits from today) we've shrinked down compiled sources size from 108 MB down to ~5.5 MB and lowered processing time from 4.5 sec down to 0.047 sec on my laptop running Linux (this was a constant time which Blender will always spent first time loading kernel, even if we've got compiled clbin).
2017-08-02Cycles: Avoid some expensive operations in header expansionsSergey Sharybin
Basically gather lines as-is during traversal, avoiding allocating memory for all the lines in headers. Brings additional performance improvement abut 20%.
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-08-02Cycles: Speed up #include expansion algorithmSergey Sharybin
The idea is to re-use files which were already processed. Gives about 4x speedup of processing time (~4.5sec vs 1.0sec) on my laptop for the whole OpenCL kernel. For users it will mean lower delay before OpenCL rendering might start.
2017-07-25Fix T51450: viewport render time keeps increasing after render is done.Jeff Knox
Reviewed By: brecht Differential Revision: https://developer.blender.org/D2747
2017-07-21Fix a few harmless maybe uninitialized warnings with GCC 5.4.Brecht Van Lommel
GCC seems to detect uninitialized into function calls now, but then isn't always smart enough to see that it is actually initialized. Disabling this warning entirely seems a bit too much, so initialize a bit more now.
2017-07-06Cycles: Add artificial memory limit debug option for OpenCLMai Lavelle
2017-07-06Revert "Cycles: use std::min and max for extra overloads"Mai Lavelle
We already have this in util_algorithm.h This reverts commit cff172c7621d89773baa99a9460f19056efb5f1e.