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-29Cycles: Make all #include statements relative to cycles source directorySergey Sharybin
The idea is to make include statements more explicit and obvious where the file is coming from, additionally reducing chance of wrong header being picked up. For example, it was not obvious whether bvh.h was refferring to builder or traversal, whenter node.h is a generic graph node or a shader node and cases like that. Surely this might look obvious for the active developers, but after some time of not touching the code it becomes less obvious where file is coming from. This was briefly mentioned in T50824 and seems @brecht is fine with such explicitness, but need to agree with all active developers before committing this. Please note that this patch is lacking changes related on GPU/OpenCL support. This will be solved if/when we all agree this is a good idea to move forward. Reviewers: brecht, lukasstockner97, maiself, nirved, dingto, juicyfruit, swerner Reviewed By: lukasstockner97, maiself, nirved, dingto Subscribers: brecht Differential Revision: https://developer.blender.org/D2586
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.
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-10-12Cycles: Add new avxf vectorized data typeSergey Sharybin
Based on existing ssef data type and to my knowledge it's also what happens in Embree nowadays. Inspired by Maxym Dmytrychenko and required for the upcoming triangle intersection commit. Hopefully the copyright message is correct.
2016-08-11Cycles: Remove odd definition from CMake fileMai Lavelle
This was causing Cycles standalone to fail to build from Blender repo. Hopefully nothing breaks from removing this.
2016-08-11Cycles: Use static assert to control structures alignmentSergey Sharybin
2016-06-06Cycles: Add support of processor groupsSergey Sharybin
Currently for windows only, this is an initial commit towards native support of NUMA. Current commit makes it so Cycles will use all logical processors on Windows running on system with more than 64 threads. Reviewers: juicyfruit, dingto, lukasstockner97, maiself, brecht Subscribers: LazyDodo Differential Revision: https://developer.blender.org/D2049
2016-04-16Cleanup: Move texture definitions to util, to avoid bad level include.Thomas Dinges
2016-04-13Add a version number to Cycles standaloneThomas Dinges
Now Cycles has its own versioning, that is mainly interesting for external projects, which integrate the engine. We start with version 1.7.0. Reasons for that: * The engine is too mature for a 1.0 release. * We assume that Cycles inside of Blender 2.61 was version 0.1. We count upwards in 0.1 steps, therefore Cycles inside of Blender 2.77 would be 1.7. We use a common versioning scheme here, with 3 decimals for the major, minor and patch level. At the moment cycles --version can be used to display the version, easy to parse for external projects. The info will be added to the UI later aswell.
2016-03-31Cycles: Add STL allocator which uses stack memorySergey Sharybin
At this point we might want to rename allocator files to util_allocator_foo.c so the stay nicely grouped in the folder.
2016-02-13Cleanup: Move Cycles sky model data to util.Thomas Dinges
2016-02-12Cycles: Always use guarded allocator of vectorsSergey Sharybin
We don't have vectors re-allocation happening multiple times from inside a loop anymore, so we can safely switch to a memory guarded allocator for vectors and keep track on the memory usage at various stages of rendering. Additionally, when building from inside Blender repository, Cycles will use Blender's guarded allocator, so actual memory usage will be displayed in the Space Info header. There are couple of tricky aspects of the patch: - TaskScheduler::exit() now explicitly frees memory used by `threads`. This is needed because `threads` is a static member which destructor isn't getting called on Blender's exit which caused memory leak print to happen. This shouldn't give any measurable speed issues, reallocation of that vector is only one of fewzillion other allocations happening during synchronization. - Use regular guarded malloc (not aligned one). No idea why it was made to be aligned in the first place. Perhaps some corner case tests or so. Vector was never expected to be aligned anyway. Let's see if we'll have actual bugs with this. Reviewers: dingto, lukasstockner97, juicyfruit, brecht Reviewed By: brecht Differential Revision: https://developer.blender.org/D1774
2016-02-06Cycles: Re-implement some utilities to avoid use of boostSergey Sharybin
The title says it all actually, the idea is to make Cycles only requiring Boost via 3rd party dependencies like OIIO and OSL. So now there are only few places which still uses Boost: - Foreach, function bindings and threading primitives. Those we can easily get rid with C++11 bump (which seems inevitable sooner or later if we'll want ot use newer LLVM for OSL), - Networking devices There's no quick solution for those currently, but there are some patches around which improves serialization. Reviewers: juicyfruit, mont29, campbellbarton, brecht, dingto Reviewed By: brecht, dingto Differential Revision: https://developer.blender.org/D1764
2016-02-06Code cleanup: remove unused Cycles code from BVH cache.Brecht Van Lommel
2016-01-12Cycles: Use special debug panel to fine-tune debug flagsSergey Sharybin
This panel is only visible when debug_value is set to 256 and has no affect in other cases. However, if debug value is not set to this value, environment variables will be used to control which features are enabled, so there's no visible changes to anyone in fact. There are some changes needed to prevent devices re-enumeration on every Cycles session create. Reviewers: juicyfruit, lukasstockner97, dingto, brecht Reviewed By: lukasstockner97, dingto Differential Revision: https://developer.blender.org/D1720
2015-12-02Cycles: Avoid recursion when doing constant foldSergey Sharybin
This reduces stress on the the stack memory which could be really handy on certain operation systems which applies strict limits on the stack. Reviewers: brecht, juicyfruit, dingto Reviewed By: brecht, juicyfruit, dingto Differential Revision: https://developer.blender.org/D1656
2015-10-28Cycles: Add utility functions to evaluate CDF of a given functorSergey Sharybin
2015-02-18CMake: picky style editCampbell Barton
'cmake_consistency_check.py' relies on this formattng.
2015-02-15Cycles: Implement guarded allocator for STL classesSergey Sharybin
The commit implements a guarded allocator which can be used by STL classes such as vectors, maps and so on. This allocator will keep track of current and peak memory usage which then can be queried. New code for allocator is only active when building Cycles with debug flag (WITH_CYCLES_DEBUG) and doesn't distort regular builds too much. Additionally now we're using own subclass of std::vector which allows us to implement shrink_to_fit() method which would ensure capacity of the vector is as big as it should be (without this making vector smaller will still use all previous memory allocated).
2015-02-15Cycles: Replace own aligned allocator with system oneSergey Sharybin
This replaces our own implementation of aligned malloc with system calls, which depends on which operation system you're on. This is probably really minor noticeable change, but in the same time it might reduce amount of wasted memory.
2015-01-30Cycles: Add fast math function moduleSergey Sharybin
It is based on fmath.h from OIIO and could be used to give some speedup in areas where absolute accuracy is not so critical.
2014-12-31Cycles: Post-reintegration tweaks to ensure things do compileSergey Sharybin
This commit contains all the tweaks which were missing in initial patch re-integration from the standalone Cycles repository. This commit also contains an utility cmake macro to help linking targets with different libraries for release/debug builds, the name currently is target_link_libraries_decoupled it gets a target and list of libraries and makes sure debug builds are using libraries with "_d" suffix. After all this changes it'll hopefully be easier to interchange patches between blender and standalone repositories, because they're now quite identical.
2014-12-31Cycles: Synchronize changes with standalone repositorySergey Sharybin
This changes were done in original commit of the standalone Cycles repository and needed here for easier patch synchronization.
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-20Cycles: Remove dynamic library helper filesSergey Sharybin
They were only needed for CUDA wrangler. Since we've switched to CUEW this utility functions are no longer needed.
2014-10-08Ghost Context RefactorJason Wilkins
https://developer.blender.org/D643 Separates graphics context creation from window code in Ghost so that they can vary separately.
2014-09-25Cycles: Add support of Glog loggingSergey Sharybin
This commit makes it possible to use Glog library for the debug logging. For now only possible when using CMake and in order to use the logging the WITH_CYCLES_LOGGING configuration variable is to be enabled. When this option is not enabled or when using Scons there's no difference in Cycles behavior at all, when using logging and no output to the console impact is gonna to be minimal. This is done in order to make it possible to have debug logging persistent in code (without need to add it when troubleshooting some bug and removing it afterwards). For now actual logging is not placed yet, only all the functions needed for the logging are written and so.
2014-08-05Deduplicate CUDA and OpenCL wranglersSergey Sharybin
For now it was mainly about OpenCL wrangler being duplicated between Cycles and Compositor, but with OpenSubdiv work those wranglers were gonna to be duplicated just once again. This commit makes it so Cycles and Compositor uses wranglers from this repositories: - https://github.com/CudaWrangler/cuew - https://github.com/OpenCLWrangler/clew This repositories are based on the wranglers we used before and they'll be likely continued maintaining by us plus some more players in the market. Pretty much straightforward change with some tricks in the CMake/SCons to make this libs being passed to the linker after all other libraries in order to make OpenSubdiv linked against those wranglers in the future. For those who're worrying about Cycles being less standalone, it's not truth, it's rather more flexible now and in the future different wranglers might be used in Cycles. For now it'll just mean those libs would need to be put into Cycles repository together with some other libs from Blender such as mikkspace. This is mainly platform maintenance commit, should not be any changes to the user space. Reviewers: juicyfruit, dingto, campbellbarton Reviewed By: juicyfruit, dingto, campbellbarton Differential Revision: https://developer.blender.org/D707
2014-06-13Cycles Refactor: Add SSE Utility code from Embree for cleaner SSE code.Thomas Dinges
This makes the code a bit easier to understand, and might come in handy if we want to reuse more Embree code. Differential Revision: https://developer.blender.org/D482 Code by Brecht, with fixes by Lockal, Sergey and myself.
2014-01-15Code cleanup: move half float functions to separate header file.Brecht Van Lommel
2014-01-14Cycles: Skip the compilation of the dedicated SSE2 kernel on x86-64, we can ↵Thomas Dinges
assume SSE2 here, so just re-use the regular one. Saves 500kb in the blender binary. Reviewed by: brecht Differential Revision: https://developer.blender.org/D199
2013-12-28Cycles: Move SIMD utility functions into its own file.Thomas Dinges
Recently added SSE macros for noise texture can be moved here as well, but I leave this for later.
2013-08-30Cycles / Standalone:Thomas Dinges
* Standalone can now be compiled without the GUI, making the glut dependency optional. Added WITH_CYCLES_STANDALONE_GUI cmake flag.
2013-08-27Cycles / Standalone:Thomas Dinges
* Rename test to standalone. Note: New CMAKE flag is WITH_CYCLES_STANDALONE.
2013-08-18Cycles: relicense GNU GPL source code to Apache version 2.0.Brecht Van Lommel
More information in this post: http://code.blender.org/ Thanks to all contributes for giving their permission!
2013-01-03Cycles Hair: refactoring to support generic attributes for hair curves. ThereBrecht Van Lommel
should be no functional changes yet. UV, tangent and intercept are now stored as attributes, with the intention to add more like multiple uv's, vertex colors, generated coordinates and motion vectors later. Things got a bit messy due to having both triangle and curve data in the same mesh data structure, which also gives us two sets of attributes. This will get cleaned up when we split the mesh class.
2012-12-04cmake was missing some header files.Campbell Barton
2012-10-17code cleanup:Campbell Barton
- move object_iterators.c --> view3d_iterators. (ED_object.h had to include ED_view3d.h which isn't so nice) - move projection functions from view3d_view.c --> view3d_project.c (view3d_view was becoming a mishmash of utility functions and operators). - some some cmake includes as system-includes.
2012-09-20code cleanup: cycles now uses system includes for boost/oiio.. etc, so we ↵Campbell Barton
dont get warnings from system headers.
2012-09-07Fix for Cycles (CUDA) compilation (again ...). Moved the AttributeStandard ↵Lukas Toenne
enum typedef and the attribute_standard_name mapping function to util_attribute/util_types headers, so they can properly be used by kernel and render files alike. This should avoid any std C includes which are not available in CUDA. Thanks to Sergey for help!
2012-04-28Cycles: merging features from tomato branch.Brecht Van Lommel
=== BVH build time optimizations === * BVH building was multithreaded. Not all building is multithreaded, packing and the initial bounding/splitting is still single threaded, but recursive splitting is, which was the main bottleneck. * Object splitting now uses binning rather than sorting of all elements, using code from the Embree raytracer from Intel. http://software.intel.com/en-us/articles/embree-photo-realistic-ray-tracing-kernels/ * Other small changes to avoid allocations, pack memory more tightly, avoid some unnecessary operations, ... These optimizations do not work yet when Spatial Splits are enabled, for that more work is needed. There's also other optimizations still needed, in particular for the case of many low poly objects, the packing step and node memory allocation. BVH raytracing time should remain about the same, but BVH build time should be significantly reduced, test here show speedup of about 5x to 10x on a dual core and 5x to 25x on an 8-core machine, depending on the scene. === Threads === Centralized task scheduler for multithreading, which is basically the CPU device threading code wrapped into something reusable. Basic idea is that there is a single TaskScheduler that keeps a pool of threads, one for each core. Other places in the code can then create a TaskPool that they can drop Tasks in to be executed by the scheduler, and wait for them to complete or cancel them early. === Normal ==== Added a Normal output to the texture coordinate node. This currently gives the object space normal, which is the same under object animation. In the future this might become a "generated" normal so it's also stable for deforming objects, but for now it's already useful for non-deforming objects. === Render Layers === Per render layer Samples control, leaving it to 0 will use the common scene setting. Environment pass will now render environment even if film is set to transparent. Exclude Layers" added. Scene layers (all object that influence the render, directly or indirectly) are shared between all render layers. However sometimes it's useful to leave out some object influence for a particular render layer. That's what this option allows you to do. === Filter Glossy === When using a value higher than 0.0, this will blur glossy reflections after blurry bounces, to reduce noise at the cost of accuracy. 1.0 is a good starting value to tweak. Some light paths have a low probability of being found while contributing much light to the pixel. As a result these light paths will be found in some pixels and not in others, causing fireflies. An example of such a difficult path might be a small light that is causing a small specular highlight on a sharp glossy material, which we are seeing through a rough glossy material. With path tracing it is difficult to find the specular highlight, but if we increase the roughness on the material the highlight gets bigger and softer, and so easier to find. Often this blurring will be hardly noticeable, because we are seeing it through a blurry material anyway, but there are also cases where this will lead to a loss of detail in lighting.
2011-11-15Cycles: move clew into cycles namespace to avoid conflicts, and fix meshBrecht Van Lommel
displacement panel showing with blender internal.
2011-11-10add some missing headers to cmake, also add some files as comments since it ↵Campbell Barton
seems they should be added but evidently work fine without.
2011-11-09edits to cycles cmake files so cmake_consistency_check.py can parse them.Campbell Barton
2011-09-19Cycles: remove deprecated strict aliasing flag for opencl, fix missing updateBrecht Van Lommel
modifying object layer in properties editor, and add memarena utility.
2011-09-01Cycles: OpenCL library is now dynamically loaded so that blender doesn't crashBrecht Van Lommel
if it's not installed on the system. Code copied from clew.h/clew.c in CLCC: http://clcc.sourceforge.net/
2011-08-16Cycles:Brecht Van Lommel
* add some (disabled) test code for using OpenImageIO in imbuf * link cycles, openimageio and boost into blender instead of a shared library * some cmakefile changes to simplify the code and follow conventions better * this may solve running cycles problems on windows XP, or give a different and hopefully more useful error message
2011-05-01Cycles: build without GLUT test app by default.Brecht Van Lommel
2011-04-28Cycles: hook up the CMake build system.Brecht Van Lommel
New build instructions for Ubuntu Linux in the wiki: http://wiki.blender.org/index.php/Dev:2.5/Source/Cycles
2011-04-27Cycles render engine, initial commit. This is the engine itself, blender ↵Ton Roosendaal
modifications and build instructions will follow later. Cycles uses code from some great open source projects, many thanks them: * BVH building and traversal code from NVidia's "Understanding the Efficiency of Ray Traversal on GPUs": http://code.google.com/p/understanding-the-efficiency-of-ray-traversal-on-gpus/ * Open Shading Language for a large part of the shading system: http://code.google.com/p/openshadinglanguage/ * Blender for procedural textures and a few other nodes. * Approximate Catmull Clark subdivision from NVidia Mesh tools: http://code.google.com/p/nvidia-mesh-tools/ * Sobol direction vectors from: http://web.maths.unsw.edu.au/~fkuo/sobol/ * Film response functions from: http://www.cs.columbia.edu/CAVE/software/softlib/dorf.php