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-09Cycles: SSS and Volume rendering in split kernelHristo Gueorguiev
Decoupled ray marching is not supported yet. Transparent shadows are always enabled for volume rendering. Changes in kernel/bvh and kernel/geom are from Sergey. This simiplifies code significantly, and prepares it for record-all transparent shadow function in split kernel.
2017-03-09Remove (ifdef) draw_documentation from text_draw.cDalai Felinto
This was no longer supported.
2017-03-093D View: wrap GPU_select cache callsCampbell Barton
Avoids including GPU_select and makes it more clear that the cache is needed for view3d_opengl_select calls. Also use typed enum for select mode.
2017-03-093D View: use cache for armature selectCampbell Barton
2017-03-09Cycles: Fix CUDA build error for some compilersMai Lavelle
Needed to include `util_types.h` before using `uint`.
2017-03-083D View: new nethod of opengl selectionCampbell Barton
Intended to replace legacy GL_SELECT, without the limitations of sample queries which can't access depth information. This commit adds VIEW3D_SELECT_PICK_NEAREST and VIEW3D_SELECT_PICK_ALL which access the depth buffers to detect whats under the pointer, so initial selection is always the closest item. The performance of this method depends a lot on the OpenGL implementations glReadPixels. Since reading depth can be slow, buffers are cached for object picking so selecting re-uses depth data, performing 1 draw instead of 3 (for 24, 18, 10 px regions, picking with many items under the pointer). Occlusion queries draw twice when picking nearest, so worst case 6x draw calls per selection. Even with these improvements occlusion queries is faster on AMD hardware. Depth selection is disabled by default, toggle option under select method. May enable by default if this works well on different hardware. Reviewed as D2543
2017-03-08Fix T50849: Transparent background produces artifacts in this compositing setupSergey Sharybin
The issue was caused by sometimes negative color returned by the filter node. Seems to be caused by precision issues. Don't see any reason why we would want negative colors in output. Those only causing issues later on.
2017-03-08Cycles: Make it more obvious message which initialization failedSergey Sharybin
2017-03-08Fix T49603: Blender/Cycles 2.78 CUDA error on Jetson-TX1~Sergey Sharybin
Patch by Bruno d'Arcangeli (@arcangeli), thanks!
2017-03-08OpenGL Select: integer rect for passing regionCampbell Barton
2017-03-08Cleanup: replace short -> int for selection hitsCampbell Barton
2017-03-08Rename BLI_rct*_init_pt_size -> radiusCampbell Barton
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: Log which device kernels are being loaded forSergey Sharybin
2017-03-08Cycles: Make it possible to access KernelGlobals from split data ↵Sergey Sharybin
initialization function
2017-03-08Cycles: Cleanup, remove residue of previous split kernel dataSergey Sharybin
This is all in split data state array.
2017-03-08Fix T50886: Blender crashes on renderSergey Sharybin
Was a mistake in one of the previous TLS commits. See comment in the pool_create to see some details why it was crashing.
2017-03-08update theme back to black re: T50869meta-androcto
2017-03-08Cycles: Fix indentationMai Lavelle
2017-03-08Cycles: Fix strict warning about unused variableMai Lavelle
2017-03-08Cycles: Calculate size of split state buffer kernel sideMai Lavelle
By calculating the size of the state buffer in the kernel rather than the host less code is needed and the size actually reflects the requested features. Will also be a little faster in some cases because of larger global work size.
2017-03-08Cycles: Fix crash after failed kernel buildMai Lavelle
Pointers to kernels were uninitialized leading to freeing of random memory addresses. Another reason it would be good to use smart pointers.
2017-03-08Cycles: Faster building of split kernelMai Lavelle
Simple change to make it so that only kernels that have been modified are rebuilt. Might only be useful during development.
2017-03-08Cycles: Initialize rng_state for split kernelMai Lavelle
Because the split kernel can render multiple samples in parallel it is necessary to have everything initialized before rendering of any samples begins. The code that normally handles initialization of `rng_state` (`kernel_path_trace_setup()`) only does so for the first sample, which was causing artifacts in the split kernel due to uninitialized `rng_state` for some samples. Note that because the split kernel can render samples in parallel this means that the split kernel is incompatible with the LCG.
2017-03-08Cycles: Remove sum_all_radiance kernelMai Lavelle
This was only needed for the previous implementation of parallel samples. As we don't have that any more it can be removed. Real reason for removal tho is this: `per_sample_output_buffers` was being calculated too small and artifacts resulted. The tile buffer is already the correct size and calculating the size for `per_sample_output_buffers` is a bit difficult with the current layout of the code. As `per_sample_output_buffers` was only needed for `sum_all_radiance`, removing that kernel and writing output to the tile buffer directly fixes the artifacts.
2017-03-08Cycles: Split path initialization into own kernelMai Lavelle
This makes it easier to initialize things correctly in the data_init kernel before they are needed by path tracing.
2017-03-08Cycles: Seperate kernel loading time from render timeMai Lavelle
2017-03-08Cycles: Add names to buffer allocationsMai Lavelle
This is to help debug and track memory usage for generic buffers. We have similar for textures already since those require a name, but for buffers the name is only for debugging proposes.
2017-03-08Cycles: CUDA implementation of split kernelMai Lavelle
2017-03-08Cycles: CPU implementation of split kernelMai Lavelle
2017-03-08Cycles: Remove ccl_fetch and SOAMai Lavelle
2017-03-08Cycles: Report device maximum allocation and detected global sizeSergey Sharybin
2017-03-08Cycles: Workaround for driver hangsMai Lavelle
Simple workaround for some issues we've been having with AMD drivers hanging and rendering systems unresponsive. Unfortunately this makes things a bit slower, but its better than having to do hard reboots. Will be removed when drivers have been fixed. Define CYCLES_DISABLE_DRIVER_WORKAROUNDS to disable for testing purposes.
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 OpenCL kernel for zeroing memory buffersMai Lavelle
Transferring memory to the device was very slow and there's really no need when only zeroing a buffer.
2017-03-08Cycles: Add more atomic operationsMai Lavelle
2017-03-08Cycles: Expose passes size to device tasksMai Lavelle
This is needed so devices can know the size of a tile buffer before any tiles are acquired.
2017-03-08Cycles: Allow device_memory to be used directlyMai Lavelle
This is useful for when theres no host side memory attched to the buffer
2017-03-07Task scheduler: Add concept of suspended poolsSergey Sharybin
Suspended pools allows to push huge amount of initial tasks without any threading synchronization and hence overhead. This gives ~50% speedup of cached rigid body with file from T50027 and seems to have no negative affect in other scenes here.
2017-03-07Depsgraph: Remove workarounds from depsgraph for keeping threads aliveSergey Sharybin
This is something what should be done in the task scheduler instead with local thread queues so we handle this in a single place.
2017-03-07Task scheduler: Initial implementation of local tasks queuesSergey Sharybin
The idea is to allow some amount of tasks to be pushed from working thread to it's local queue, so we can acquire some work without doing whole mutex lock. This should allow us to remove some hacks from depsgraph which was added there to keep threads alive.
2017-03-07Task scheduler: Use real pthread's TLS to access active thread's dataSergey Sharybin
This allows us to avoid TLS stored in pool which gives us advantage of using pre-allocated tasks pool for the pools created from non-main thread. Even on systems with slow pthread TLS it should not be a problem because we access it once at a pool construction time. If we want to use this more often (for example, to get rid of push_from_thread) we'll have to do much more accurate benchmark.
2017-03-07Task scheduler: Refactor the way we store thread-spedific dataSergey Sharybin
Basically move all thread-specific data (currently it's only task memory pool) from a dedicated array of taskScheduler to TaskThread. This way we can add more thread-specific data in the future with less of a hassle.
2017-03-07Task scheduler: Remove per-pool threads limitSergey Sharybin
This feature was adding extra complexity to task scheduling which required yet extra variables to be worried about to be modified in atomic manner, which resulted in following issues: - More complex code to maintain, which increases risks of something going wrong when we modify the code. - Extra barriers and/or locks during task scheduling, which causes extra threading overhead. - Unable to use some other implementation (such as TBB) even for the comparison tests. Notes about other changes. There are two places where we really had to use that limit. One of them is the single threaded dependency graph. This will now construct a single-threaded scheduler at evaluation time. This shouldn't be a problem because it only happens when using debugging command line arguments and the code simply don't run in regular Blender operation. The code seems a bit duplicated here across old and new depsgraph, but think it's OK since the old depsgraph is already gone in 2.8 branch and i don't see where else we might want to use such a single-threaded scheduler. When/if we'll want to do so, we can move it to a centralized single-threaded scheduler in threads.c. OpenGL render was a bit more tricky to port, but basically we are using conditional variables to wait background thread to do all the job.
2017-03-07Fix typo in command line arg listAaron Carlisle
2017-03-07Update keymap presets for recent transform manipulator changesJulian Eisel
Part of T50565.
2017-03-07Once more T50565: Allow using planar constraints for scale manipulatorJulian Eisel
2017-03-06Rigid body: fix viewport not updating on properties change.Clément Foucault
2017-03-06Fix width calculation for split layoutsraa
2017-03-06Cycles: Fix strict -Wpedantic warnings with GCCSergey Sharybin
Patch by Stefan Werner, thanks!