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-01-20Cycles: Expose diffuse and glossy depth to Light Path nodeSergey Sharybin
Was a bit confusing to have transparent and translucent depth exposed but no diffuse or glossy. Reviewers: brecht Subscribers: eyecandy Differential Revision: https://developer.blender.org/D2399
2017-01-20Cycles: Fix T49901: OpenCL build error after recent light texture coordinate ↵Lukas Stockner
commit Basically, the problem here was that the transform that's used to bring texture coordinates to world space is either fetched while setting up the shader (with Object Motion is enabled) or fetched when needed (otherwise). That helps to save ShaderData memory on OpenCL when Object Motion isn't needed. Now, if OM is enabled, the Lamp transform can just be stored inside the ShaderData as well. The original commit just assumed it is. However, when it's not (on OpenCL by default, for example), there is no easy way to fetch it when needed, since the ShaderData doesn't store the Lamp index. So, for now the lamps just don't support local texture coordinates anymore when Object Motion is disabled. To fix and support this properly, one of the following could be done: - Just always pre-fetch the transform. Downside: Memory Usage increases when not using OM on OpenCL - Add a variable to ShaderData that stores the Lamp ID to allow fetching it when needed - Store the Lamp ID inside prim or object. Problem: Cycles currently checks these for whether an object was hit - these checks would need to be changed. - Enable OM whenever a Texture Coordinate's Normal output is used. Downside: Might not actually be needed.
2017-01-20Cycles: Fix OpenCL compilation with the new brick textureLukas Stockner
2017-01-20Cycles: Add smoothing option to the Brick TextureLukas Stockner
This option allows to create a smoother transition between Bricks and Mortar - 0 applies no smoothing, and 1 smooths across the whole mortar width. Mainly useful for displacement textures. The new default value for the smoothing option is 0.1 to give some smoothing that helps with antialiasing, but existing nodes are loaded with smoothing 0 to preserve compatibility. Reviewers: sergey, dingto, juicyfruit, brecht Reviewed By: brecht Subscribers: Blendify, nutel Differential Revision: https://developer.blender.org/D2230
2017-01-20Cycles: 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).
2017-01-20Cycles: OpenCL 3d textures support.Hristo Gueorguiev
Note that volume rendering is not supported yet, this is a step towards that. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2299
2017-01-20Cycles: implement partial constant folding for exponentiation.Alexander Gavrilov
This is also an important mathematical operation that can be folded if it is known that one argument is a certain constant. For colors the operation is provided as a Gamma node. The SVM Gamma node needs a small fix to make it follow the 0 ^ 0 == 1 rule, same as the Power node, or the Gamma node itself in OSL mode. Reviewers: #cycles Differential Revision: https://developer.blender.org/D2263
2016-10-24Blender 2.78: Port style cleanup from CyclesSergey Sharybin
Kinda nice to have official release code to be really clean.
2016-09-14Cycles: Replace object index hack with actual checks for SD_TRANSFORM_APPLIEDMai Lavelle
Using ones complement for detecting if transform has been applied was confusing and led to several bugs. With this proper checks are made. Also added a few transforms where they were missing, mostly affecting baking and displacement when `P` is used in the shader (previously `P` was in the wrong space for these shaders) Also removed `TIME_INVALID` as this may have resulted in incorrect transforms in some cases. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2192
2016-09-14Cycles: Fix bump mapping to use object space when used with true displacementMai Lavelle
Bump mapping was happening in world space while displacement happens in object space, causing shading errors when displacement type was used with bump mapping. To fix this the proper transforms are added to bump nodes. This is only done for automatic bump mapping however, to avoid visual changes from other uses of bump mapping. It would be nice to do this for all bump mapping to be consistent but that will have to wait till we can break compatibility. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2191
2016-09-14Cycles: Fix OpenCL speed regression introduced with the improved bump mappingLukas Stockner
The two SVM nodes added with e7ea1ae78c caused a slowdown on AMD cards when rendering with OpenCL, whether displacement was used or not. In the Barcelona Pavillon scene on a RX480, this would cause a 12% slowdown. Therefore, this commit adds a additional flag for feature-adaptive compilation so that the new SVM nodes are only enabled when they are needed (Node tree connected to the Displacement output and Displacement type set to Both). Also, the nodes were also added to shaders when the Displacement Type was set to Bump (the default), which was unneccessary and is fixed now. Thanks to linda2 on IRC for reporting and testing and to maiself for help with the displacement shader code. This fix might be relevant for 2.78, but it should be tested further before including it.
2016-09-14Fix a few OpenCL compiler warnings.Brecht Van Lommel
2016-09-02Cycles microdisplacement: Improved automatic bump mappingMai Lavelle
Object coordinates can now be used in the displacement shader and will give correct results, where as before bump mapping was calculated from the displace positions and resulted in incorrect shading. This works by evaluating the shader in two parts, first bump then surface, and setting the shader state to match what it would be if the surface was undisplaced for the bump shader evaluation. Currently only `P` is set as if undisplaced, but other shader variables could be set as well, such as `I` or `time`. Since these aren't set to anything meaningful for displacement I left them out of this patch, we can decide what to do with them separately. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2156
2016-08-30Fix T49187: inconsistent Normal Map node output for backfacing polygons.Alexander Gavrilov
There basically are two issues here: in smooth mode (and all non-tangent normal map types) it doesn't invert the normal for backfacing polys; on the other hand for flat shaded tangent type it is inverted too soon. This fix does a brute force correction by checking the backfacing flag. Reviewers: #cycles, brecht Reviewed By: #cycles, brecht Differential Revision: https://developer.blender.org/D2181
2016-08-24Cycles Standalone: Fix support for subdivision meshesMai Lavelle
Changes from microdisplacement work broke previous support for subdivision meshes, sometimes leading to crashes; this makes things work again. Files that contain "patch" nodes will need to be updated to use meshes instead, as specifying patches was both inefficient and completely unsupported by the new subdivision code.
2016-08-14Cycles: Add single channel texture support for OpenCL.Thomas Dinges
This way OpenCL devices can also benefit from a smaller memory footprint, when using e.g. bumpmaps (greyscale, 1 channel). Additional target for my GSoC 2016.
2016-08-11Cycles: Enable half float support (4 channels and 1 channel) on CUDA.Thomas Dinges
Atm OpenEXR half files benefit from this and will use only 1/2 of the memory now. More space for HDRs! Part of my GSoC 2016.
2016-08-11Cycles: Change code order for Image Data Types.Thomas Dinges
Now we have the 4 component ones first (float4, byte4, half4) followed by the 1 component ones (float, byte, half). Makes code a bit more consistent and also reduces code a bit when enabling half support on GPU in next commit. This also exposed a typo in half CPU images for 3D textures, which wasn't used yet, but good to have that one fixed anyway.
2016-08-09Cycles: avoid making NaNs in Vector Math node by normalizing zero vectors.Alexander Gavrilov
Since inputs are user controlled, the node can't assume they aren't zero.
2016-08-06Cycles: Add AttributeDescriptorMai Lavelle
Adds a descriptor for attributes that can easily be passed around and extended to contain more data. Will be used for attributes on subdivision meshes. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2110
2016-08-05Cycles: Fix embarrassing typoSergey Sharybin
Spotted by Mai Lavelle, thanks!
2016-08-02Cycles: Some more inline policy tweaks for CUDA 8Sergey Sharybin
Makes it so toolkit does exactly the same decision about what to inline, but unfortunately it has really barely visible difference on GTX-980.
2016-08-01Cycles: Tweaks to support CUDA 8 toolkitSergey Sharybin
All the changes are mainly giving explicit tips on inlining functions, so they match how inlining worked with previous toolkit. This make kernel compiled by CUDA 8 render in average with same speed as previous kernels. Some scenes are somewhat faster, some of them are somewhat slower. But slowdown is within 1% so far. On a positive side it allows us to enable newer generation cards on buildbots (so GTX 10x0 will be officially supported soon).
2016-07-31Cycles: refactor kernel closure storage to use structs per closure type.Brecht Van Lommel
Reviewed By: dingto, sergey Differential Revision: https://developer.blender.org/D2127
2016-07-31Cycles: constant folding for RGB/Vector Curves and Color Ramp.Alexander Gavrilov
These are complex nodes, and it's conceivable they may end up constant in some circumstances within node groups, so folding support is useful. Reviewed By: brecht Differential Revision: https://developer.blender.org/D2084
2016-07-29Cycles microdisplacement: ngons and attributes for subdivision meshesMai Lavelle
This adds support for ngons and attributes on subdivision meshes. Ngons are needed for proper attribute interpolation as well as correct Catmull-Clark subdivision. Several changes are made to achieve this: - new primitive `SubdFace` added to `Mesh` - 3 more textures are used to store info on patches from subd meshes - Blender export uses loop interface instead of tessface for subd meshes - `Attribute` class is updated with a simplified way to pass primitive counts around and to support ngons. - extra points for ngons are generated for O(1) attribute interpolation - curves are temporally disabled on subd meshes to avoid various bugs with implementation - old unneeded code is removed from `subd/` - various fixes and improvements Reviewed By: brecht Differential Revision: https://developer.blender.org/D2108
2016-07-17Cycles: Fix OpenCL compilation after the recent numerical fixesLukas Stockner
2016-07-16Cycles: Fix three numerical issues in the fresnel, normal map and Beckmann codeLukas Stockner
- In fresnel_dielectric, the differentials calculation sometimes divided by zero. - When the normal map was (0.5, 0.5, 0.5), the code would try to normalize a zero vector. Now, it just uses the regular normal as a fallback. - The approximate error function used in Beckmann sampling sometimes overflowed to inf while calculating r^16. The final value is 1 - 1/r^16, however, so now it just returns 1 if the computation would overflow otherwise.
2016-07-11Cycles: Fix Extend image extension mode on OpenCLSergey Sharybin
2016-07-02Fix Cycles OpenCL not taking Extend and Clip extension types into account.Thomas Dinges
(See T48720).
2016-06-23Cycles: Add multi-scattering, energy-conserving GGX as an option to the ↵Lukas Stockner
Glossy, Anisotropic and Glass BSDFs This commit adds a new distribution to the Glossy, Anisotropic and Glass BSDFs that implements the multiple-scattering microfacet model described in the paper "Multiple-Scattering Microfacet BSDFs with the Smith Model". Essentially, the improvement is that unlike classical GGX, which only models single scattering and assumes the contribution of multiple bounces to be zero, this new model performs a random walk on the microsurface until the ray leaves it again, which ensures perfect energy conservation. In practise, this means that the "darkening problem" - GGX materials becoming darker with increasing roughness - is solved in a physically correct and efficient way. The downside of this model is that it has no (known) analytic expression for evalation. However, it can be evaluated stochastically, and although the correct PDF isn't known either, the properties of MIS and the balance heuristic guarantee an unbiased result at the cost of slightly higher noise. Reviewers: dingto, #cycles, brecht Reviewed By: dingto, #cycles, brecht Subscribers: bliblubli, ace_dragon, gregzaal, brecht, harvester, dingto, marcog, swerner, jtheninja, Blendify, nutel Differential Revision: https://developer.blender.org/D2002
2016-06-21Fix T48691: Cycles - OpenCL - HDR Image mapping does not match CUDA renderingLukas Stockner
The OpenCL texture code didn't offset the coordinates by half a pixel like the CPU code does.
2016-06-19Cycles: add constant folding for more color operation nodes.Alexander Gavrilov
Invert, brightness & constrast, separate/combine and Mix RGB blend modes and clamping.
2016-06-19Fix Cycles RGB and Vector Curves node Fac handling.Alexander Gavrilov
2016-05-29Code refactor: add separate RGB to BW node and rename some sockets.Brecht Van Lommel
2016-05-27Cleanup: Shorten texture variables, tex and image was kinda redundant.Thomas Dinges
Also make prefix consistent, so it starts with either TEX_NUM or TEX_START, followed by texture type and architecture.
2016-05-25Fix T48514: Cycles toon glossy BSDF not respecting reflective caustics option.Brecht Van Lommel
2016-05-23Cycles: Fix wrong closure counter in feature adaptive kernelSergey Sharybin
Some closures were missing from calculation, leading to an array under-allocation, presumable causing memory corruption issues with emission shaders on OpenCL and was causing issues with Volume 3D textures with CUDA. The issue was identified by Thomas Dinges, the patch is different from the original D2006. See the brief discussion there. Current approach is similar (or the same) as Brecht suggested.
2016-05-22Code refactor: add generic Cycles node infrastructure.Brecht Van Lommel
Differential Revision: https://developer.blender.org/D2016
2016-05-19Cycles: Add support for bindless textures.Thomas Dinges
This adds support for CUDA Texture objects (also known as Bindless textures) for Kepler GPUs (Geforce 6xx and above). This is used for all 2D/3D textures, data still uses arrays as before. User benefits: * No more limits of image textures on Kepler. We had 5 float4 and 145 byte4 slots there before, now we have 1024 float4 and 1024 byte4. This can be extended further if we need to (just change the define). * Single channel textures slots (byte and float) are now supported on Kepler as well (1024 slots for each type). ToDo / Issues: * 3D textures don't work yet, at least don't show up during render. I have no idea whats wrong yet. * Dynamically allocate bindless_mapping array? I hope Fermi still works fine, but that should be tested on a Fermi card before pushing to master. Part of my GSoC 2016. Reviewers: sergey, #cycles, brecht Subscribers: swerner, jtheninja, brecht, sergey Differential Revision: https://developer.blender.org/D1999
2016-05-17Code refactor: use dynamic shader node array lengths now that OSL supports them.Brecht Van Lommel
2016-05-10Cycles: Add support for float4 textures on OpenCL.Thomas Dinges
Title says it all, this adds OpenCL float4 texture support. There is a bug in the code still, I get a "Out of ressources error" on nvidia hardware here, not sure whats wrong yet. Will investigate further, but maybe someone else has an idea. :) Reviewers: #cycles, brecht Subscribers: brecht, candreacchio Differential Revision: https://developer.blender.org/D1983
2016-05-09Cleanup: More byte -> byte4 renaming for consistency.Thomas Dinges
2016-05-06Cleanup: Rename texture slots to float4 and byte, to distinguish from future ↵Thomas Dinges
float (single channel) and half_float slots. Should be no functional changes, tested CPU and CUDA.
2016-05-05Code cleanup: simplify SVM stack assignment.Brecht Van Lommel
2016-04-16Cycles: Refactor Image Texture limits.Thomas Dinges
Instead of treating Fermi GPU limits as default, and overriding them for other devices, we now nicely set them for each platform. * Due to setting values for all platforms, we don't have to offset the slot id for OpenCL anymore, as the image manager wont add float images for OpenCL now. * Bugfix: TEX_NUM_FLOAT_IMAGES was always 5, even for CPU, so the code in svm_image.h clamped float textures with alpha on CPU after the 5th slot. Reviewers: #cycles, brecht Reviewed By: #cycles, brecht Subscribers: brecht Differential Revision: https://developer.blender.org/D1925
2016-04-15Fix T48139: Checker texture strange behavior in cyclesSergey Sharybin
Seems particular CUDA implementations has some precision issues, which made integer coordinate (which was expected to always be positive) to go negative.
2016-04-13Cycles: Minor cleanup, whitespace around keyword and preprocessor indentSergey Sharybin
2016-04-05Revert "Cycles: Remove the Preetham Sky model."Thomas Dinges
This reverts commit d91316dc672dc1ee69fbd24d2f00124a24b75c6b.
2016-04-03Cycles: Remove the Preetham Sky model.Thomas Dinges
The improved Hosek / Wilkie model was added during my GSoC 2013 and the default since then. The older model was kinda kept for compatibility, but after more than 2 years it's time to remove it. The Hosek / Wilkie model is more realistic anyway, and people who really want a day / night transition can mix the Sky Shader with another one (e.g. color) and fade between the two.