Commit Graph

4909 Commits

Author SHA1 Message Date
Thomas Dinges
0206d7d02b Cycles / OSL:
* Ported the Brick Texture to OSL. Renders fine :)
2012-09-04 22:33:11 +00:00
Lukas Toenne
95b85a8c37 Revert "Use one context per OSL thread. Not sure if this actually works, but the simple renderer example in OSL does it this way."
This does not actually work: The context must not be shared between threads, but using the same context between different samples actually seems to prevent OSL from switching between shaders. The proper solution would be to ensure memory pooling works correctly.

This reverts commit 69f87e69258d6266dcb20f09f7e3d4021e663432.
2012-09-04 17:28:36 +00:00
Thomas Dinges
0e3f3a0aef OSL:
* Holdout shader is now working in OSL.
2012-09-04 16:54:32 +00:00
Lukas Toenne
64a4a05d31 Fix for OSL input parameter name mapping. When assigning input constants to shader parameters, use the compatible_name function to strip whitespace. 2012-09-04 16:47:00 +00:00
Lukas Toenne
f51eb99faa Minor syntax error in musgrave osl texture. 2012-09-04 16:46:56 +00:00
Thomas Dinges
f2caaaec9b OSL:
* WIP commit of fixes for musgrave and wave.
2012-09-04 16:00:12 +00:00
Brecht Van Lommel
adea12cb01 Cycles: merge of changes from tomato branch.
Regular rendering now works tiled, and supports save buffers to save memory
during render and cache render results.

Brick texture node by Thomas.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures#Brick_Texture

Image texture Blended Box Mapping.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures#Image_Texture
http://mango.blender.org/production/blended_box/

Various bug fixes by Sergey and Campbell.
* Fix for reading freed memory in some node setups.
* Fix incorrect memory read when synchronizing mesh motion.
* Fix crash appearing when direct light usage is different on different layers.
* Fix for vector pass gives wrong result in some circumstances.
* Fix for wrong resolution used for rendering Render Layer node.
* Option to cancel rendering when doing initial synchronization.
* No more texture limit when using CPU render.
* Many fixes for new tiled rendering.
2012-09-04 13:29:07 +00:00
Thomas Dinges
bf8d695234 OSL:
* Gradient texture renders now.
2012-09-04 11:41:48 +00:00
Lukas Toenne
6805db676d Use one context per OSL thread. Not sure if this actually works, but the simple renderer example in OSL does it this way. 2012-09-04 08:53:47 +00:00
Lukas Toenne
71871463a4 Fix for bad memory leak in OSL: the context created for each OSL sample did not get released properly. 2012-09-04 08:53:44 +00:00
Campbell Barton
914d389713 fix for building without python, also rework python-main-loop control in the BGE to not use RNA (use lower level BKE/BLI funcs instead) 2012-09-04 03:26:12 +00:00
Campbell Barton
aaafa0c2fe code cleanup: move file string defines into BLI_path_utils.h, BKE_utildefines is now unused but keep incase we want to add defines there later. 2012-09-03 22:04:14 +00:00
Lukas Toenne
f8c29c999f Fix for Cycles OSL: The RenderServices pointer in ShadingSystem is no longer accessible from the interface class (presumably because it is just the base class pointer anyway and would have to be casted). The OSLRenderServices pointer to our own implementation is now stored alongside the ShadingSystem in the kernel globals, so it can be accessed in thread_init. 2012-09-03 18:51:02 +00:00
Lukas Toenne
9b30e8d83a The shader id generated by the manager contains some special flags in high bits, leading to out-of-range index if used directly. This must use the SHADER_MASK to get actual array index. 2012-09-03 18:50:59 +00:00
Brecht Van Lommel
a2515f3ca0 Fix #32089: non-progressive integrator issue with semi-transparent surfaces. 2012-09-03 17:41:49 +00:00
Brecht Van Lommel
195c520d05 Fix #32046: GHOST_DropTargetWin32 memory leak, patch by Matt D. 2012-09-03 17:41:47 +00:00
Brecht Van Lommel
989313e450 Fix #32088: cycles crash removing a lamp with non-progressive sampling. 2012-09-03 16:52:59 +00:00
Thomas Dinges
bf395ff0b8 OSL / Cmake:
* Holdout shader was missing in cmake.
2012-09-03 14:08:03 +00:00
Brecht Van Lommel
bfa82b074d Fix #32097: cycles window texture coordinate wrong, happened after 2.63. 2012-09-03 14:07:49 +00:00
Lukas Toenne
ad551c1ec6 Enable compilation of the SVM backend for Cycles even when OSL is enabled. The switch between SVM/OSL is decided at runtime, so the SVM code cannot simply be ignored when OSL is enabled.
Currently all shader functions check the OSL/SVM flag to dispatch to the appropriate backend. If this turns out to be a significant overhead (unlikely) this test should be moved out of the inner loop.
2012-09-03 13:56:40 +00:00
Brecht Van Lommel
264975b89c Fix #32144: cycles viewport missing update with dupliverts. Ideally this would be
fixed in the dependency graph so it gives a proper signal but that would need a
bigger refactor.
2012-09-03 13:18:23 +00:00
Thomas Dinges
9fbc1c3149 * Added back UI switch for the Cycles shading system. Only visible when the feature set is "Experimental". 2012-09-03 12:35:32 +00:00
Lukas Toenne
2f70800923 Fix for OSL shader install paths. 2012-09-03 11:38:22 +00:00
Lukas Toenne
99972cbfdc RTTI needs to be disabled in cycles for OSL. 2012-09-03 11:38:20 +00:00
Lukas Toenne
c0a3657e7a Added library linking for cycles_kernel_osl to OSL libraries and added cycles_kernel_osl to the list of blender libs in creator. 2012-09-03 11:38:18 +00:00
Lukas Toenne
0238d032b2 Replaced dynamic_casts for node type checks by simple 'special type' identifiers. RTTI has to be disabled in cycles for OSL. 2012-09-03 11:38:15 +00:00
Lukas Toenne
c9cd150f43 Cycles compile fix: only use std::isfinite when OSL is enabled. 2012-09-02 18:11:28 +00:00
Thomas Dinges
dfec5a3655 * Removed last occurrence of get_pointcloud_attr_query. 2012-09-02 17:39:07 +00:00
Thomas Dinges
add7ca12d9 * OSL can't overwrite input parameters, use a local variable instead. 2012-09-02 16:37:58 +00:00
Thomas Dinges
b26d19a7b8 Cycles / OSL:
* Updates for noise_turbulence, to match svm function.
2012-09-02 16:06:18 +00:00
Lukas Toenne
e1bca6cfc4 Fixed a number of OSL syntax errors from the updated 1.2 API. Microfacet functions now all take an eta parameter, set to 1.0 if no IOR is given. 2012-09-02 15:41:35 +00:00
Thomas Dinges
28d02bc056 Fix for r50314:
* oren_nayar is not part of the default stdosl, added it back.
2012-09-02 15:26:13 +00:00
Lukas Toenne
092f6344c3 Fixed remaining syntax errors in OSL files. node_sepcomb_rgb.osl is split into 2 parts, since OSL only allows one shader per file. 2012-09-02 15:07:51 +00:00
Thomas Dinges
f1d279912f Cycles / OSL:
* Add oslutil.h, from osl 1.2.
2012-09-02 13:34:12 +00:00
Thomas Dinges
6c02a8fc8c OSL / Cycles:
* Update the stdosl header file, from official osl 1.2.
2012-09-02 13:23:44 +00:00
Thomas Dinges
25fc454ce0 Cycles / OSL:
* Remove declaration of node_blend_weight_texture from cmake, does not exist, and match node_blend_weight name in nodes.cpp with the actual file.
2012-09-02 12:46:54 +00:00
Thomas Dinges
23dca13691 Cycles / OSL:
* First batch of compile fixes for several shaders, mainly syntax errors.
2012-09-02 12:24:04 +00:00
Thomas Dinges
748582f49e Cycles / OSL:
Fixes for API changes in OSL RendererServices:

* Added two new required get_matrix methods, from OSL RendererServices (otherwise the constructor fails). The two new matrix methods probably still need an implementation. 
* Removed deprecated "get_pointcloud_attr_query" and "pointcloud". There are two new routines for pointclouds, function headers for those are there.

* Removed the (unused) PARTIO code parts from OSL. It was marked as not tested / not working, and due to the api changes here broken for sure. Code is still in svn history if needed.
2012-09-02 01:10:31 +00:00
Thomas Dinges
779ecb06dd Cycles / OSL:
* Compile fix for the "direction_to_panorama" issue.
Added kernel_projection.h to kernel_triangle.h.
2012-09-01 15:30:35 +00:00
Lukas Toenne
ff9b071fbd Fix #32463, Cycles crashing. The particle system sync_recalc part was checking object data, which can be NULL and doesn't actually say anything about particles, removed. 2012-09-01 11:30:22 +00:00
Lukas Toenne
cc835e47b0 Cycles fix: don't skip particle device update when there are no particle systems. The device texture always contains at least one dummy particle in case particle info node is used for non-instance objects, this must be initialized in any case. 2012-09-01 11:30:19 +00:00
Thomas Dinges
fda711a851 Cycles / OSLGlobals:
* Fixes for changes in the Open Shading Langauge API from version 0.6.0: 11ce51418b

* Removed the need for ShadingSystemImpl.
2012-08-31 20:31:21 +00:00
Thomas Dinges
7ac0dd2953 Cycles / OSL:
* OSL namespace fixes for osl_shader.cpp.
2012-08-31 20:08:55 +00:00
Thomas Dinges
01815d83fb Cycles / OSL:
* Fixes for changes in r40163. Removed unused code and fixed emissive_eval function.
2012-08-31 19:59:50 +00:00
Lukas Toenne
2694b68d4a Cycles: Fix for particle info node crash: The particle 'alive' state can be set to 'dying', which is just an indicator that the particle will be removed, but it is is used for instancing. This would lead to insufficient texture size and assert crash. 2012-08-31 19:39:08 +00:00
Lukas Toenne
3ca3102bcf Cycles: Fully initialize the dummy particle at index 0. 2012-08-31 19:39:06 +00:00
Lukas Toenne
1228be0896 Cycles: Start the particle index for object instances at 1 instead 0. The first particle in the device texture is a dummy for non-instance objects using the particle info node. 2012-08-31 19:39:04 +00:00
Lukas Toenne
cabdeec0c0 Cycles: Tag particle systems after syncing to make sure the particle system manager updates the device data. 2012-08-31 19:39:03 +00:00
Lukas Toenne
9e3fa15d4b Added a bunch of additional particle state attributes to the Cycles particle info node:
* Location: Basically the same as the location from Object Info node for object instances on particles, but in principle there could be additional offsets for dupli objects, so included for completeness.
* Size: Single float scale of the particle. Also directly translates to object scale for current dupli objects, but handy to have as a single float to start with instead of a scale vector (currently not even exposed in Object Info).
* Rotation: This is a quaternion, which are not yet supported by Cycles nodes. The float4 is copied to internal Cycles data and stored in the particles texture data, but the node doesn't have a socket for it yet and the data is not yet written to the stack. Code is just commented out so could be enabled quickly if/when rotation support is added to cycles.
* Velocity: Linear velocity vector of particles.
* Angular Velocity: Angular velocity around principle axes.

The texture data is currently packed tightly into the particles texture, which saves a few bytes, but requires an additional texture lookup for some vector attributes which spread over two float4s. Could also add another float4 to particle size to avoid this.
2012-08-31 19:38:59 +00:00
Lukas Toenne
f0d2477484 Fix for #32184 and redesign of particle storage in Cycles.
The particle data used by the Particle Info node was stored in cycles as a list in each object. This is a problem when the particle emitter mesh is hidden: Objects in cycles are only intended as instances of renderable meshes, so when hiding the emitter mesh the particle data doesn't get stored either. Also the particle data can potentially be copied to multiple instances of the same object, which is a waste of texture space.

The solution in this patch is to make a completely separate list of particle systems in the Cycles scene data. This way the particle data can be generated even when the emitter object itself is not visible.
2012-08-31 17:27:08 +00:00