Commit Graph

951 Commits

Author SHA1 Message Date
Thomas Dinges
2c58e96685 Cycles / Shader Graph optimization:
* Unnecessary shader inputs inside the Mix Shader are now ignored, in case the factor is 0.0 / 1.0 and not connected. 
This way we save some render time for complex node graphs. 

Example: http://www.pasteall.org/pic/show.php?id=48226
Check the Mix Shader at the end: In this case, Cycles will now avoid the complete huge shader tree, and only calculate the Diffuse Shader.
Rendertime decreased from 1:50 min to 1:20 min on CPU. GPU rendering benefits as well from this. 

This only affects SVM, OSL was already doing these optimizations.
2013-03-31 01:18:10 +00:00
Campbell Barton
1777a69818 misc minor edits.
- pass string size to BLI_timestr() to avoid possible buffer overrun.
- quiet warning for mingw.
- include guards for windows utf conversion funcs.
- fix for mistage in edge-angle-selection check.
- some style cleanup.
2013-03-29 06:25:22 +00:00
Campbell Barton
8e3d590b76 code cleanup: python/pep8 and double-promotion warnings. 2013-03-28 19:33:14 +00:00
Campbell Barton
d15d78a33a style cleanup: osl and NULL pointer use, also correct sequencer gap operator id's 2013-03-27 20:27:07 +00:00
Thomas Dinges
535253cad0 Cycles / SunSky:
* Use already calculated theta^2 for theta^3 calculation.
2013-03-27 19:44:25 +00:00
Thomas Dinges
bf2c46f5bd Code cleanup / Cycles:
* Remove unused variable from noise_wave().
2013-03-27 19:08:29 +00:00
Thomas Dinges
c4ae6f2c36 Fix for [#34747] Rendering invisible tiles
* reset_session() was not taking render percentage into account in case persistent_data was enabled.
* also deprecate old "maximsize" DNA variable.
2013-03-24 10:52:20 +00:00
Lukas Toenne
e2baf49d79 Fix for cycles group node bug, reported on IRC: Group nodes input proxies did not get their correct default value set. Forgot to add this during r55440 ... 2013-03-23 16:45:38 +00:00
Thomas Dinges
349c5ecc95 Cycles:
* Avoid an unnecessary condition in light.cpp, (totarea > 0.0f) is always true inside the "if(kintegrator->use_direct_light)" branch.
2013-03-23 10:11:29 +00:00
Thomas Dinges
5cbc000f05 Cycles:
* Move OpenGL settings out of the film panel into its own. 

Imho these should go completely elsewhere, but better separated than mixed with Cycles settings.
2013-03-23 07:09:04 +00:00
Campbell Barton
dd0e2da784 code cleanup: use booleans and const's for operator vars. 2013-03-22 04:40:45 +00:00
Brecht Van Lommel
5dbe5fc496 Fix #34700: cycles depth of field now works with orthographic cameras too. 2013-03-21 02:38:11 +00:00
Lukas Toenne
1c3b3321e7 Fix for #34708 and #34709, cycles group nodes were not working well with 0 or 2+ group input/output nodes.
The issue here was that the proxy nodes created for connecting extern group node sockets to the internal nodes were generated by the input/output nodes themselves.

0 input/output nodes: there would be no proxy that external group node sockets can map to
2+ input/output nodes: additional nodes would overwrite entries from previous nodes, so that only one of the input/output nodes would be used.

Solution is to always generate exactly 1 proxy node for every group socket in advance, regardless of whether it is used internally. Internal node sockets can then all map to this proxy node.

In the case out output nodes there should only ever be one active node, otherwise the connection to the proxy would be ambiguous. For this purpose the NODE_DO_OUTPUT flag has been exposed to RNA, so that cycles can check it and only use the active output.
2013-03-20 13:17:35 +00:00
Sergey Sharybin
6cdce15c3b Hopefully blender will compile with strict flags again. 2013-03-18 19:27:31 +00:00
Lukas Toenne
4638e5f99a Merge of the PyNodes branch (aka "custom nodes") into trunk.
PyNodes opens up the node system in Blender to scripters and adds a number of UI-level improvements.

=== Dynamic node type registration ===
Node types can now be added at runtime, using the RNA registration mechanism from python. This enables addons such as render engines to create a complete user interface with nodes.

Examples of how such nodes can be defined can be found in my personal wiki docs atm [1] and as a script template in release/scripts/templates_py/custom_nodes.py [2].

=== Node group improvements ===
Each node editor now has a tree history of edited node groups, which allows opening and editing nested node groups. The node editor also supports pinning now, so that different spaces can be used to edit different node groups simultaneously. For more ramblings and rationale see (really old) blog post on code.blender.org [3].

The interface of node groups has been overhauled. Sockets of a node group are no longer displayed in columns on either side, but instead special input/output nodes are used to mirror group sockets inside a node tree. This solves the problem of long node lines in groups and allows more adaptable node layout. Internal sockets can be exposed from a group by either connecting to the extension sockets in input/output nodes (shown as empty circle) or by adding sockets from the node property bar in the "Interface" panel. Further details such as the socket name can also be changed there.

[1] http://wiki.blender.org/index.php/User:Phonybone/Python_Nodes
[2] http://projects.blender.org/scm/viewvc.php/trunk/blender/release/scripts/templates_py/custom_nodes.py?view=markup&root=bf-blender
[3] http://code.blender.org/index.php/2012/01/improving-node-group-interface-editing/
2013-03-18 16:34:57 +00:00
Thomas Dinges
50c28740d4 Cycles / CUDA:
* Simplify Computing Capability Check, only check for major.
2013-03-17 14:32:50 +00:00
Thomas Dinges
5bea78301d Fix for [#34654] Cycles hair particle system modifier obeys viewport visibility as well
* Now Show Render and Show Viewport flags work independently and correct.
2013-03-16 08:49:39 +00:00
Sergey Sharybin
9d896f8f84 Border rendering now works for all scenes used in compositor,
before this only active scene would be rendered with border.

When do_render_fields_blur_3d() is finished, it'll modify
render's display rect so it'll correspond bordered render
result placed on black backgrund. Actual border is stored
nowhere, which makes it only way to re-calculate disprect
for all other renders used in compo based on source. Not
so big deal actually.

Also needed to modify Cycles a bit, because before this
patch it used border settings from scene being rendered.
Now made it so render data is passing to external engines.

Using a property inside RenderEngine structure for this.
Not best ever design for passing render data, but this
would prevent API breakage. So now external engines could
access engine.render to access active rendering settings.

Reviewed by Brecht, thanks!
2013-03-14 07:38:37 +00:00
Thomas Dinges
56538ea685 Cycles / OSL:
* More small improvements: return immediately, and use "else if".
2013-03-10 00:42:47 +00:00
Thomas Dinges
5ac628fb47 Cycles / OSL:
* Avoid some conditional branches for the Noise texture and return immediately.
2013-03-10 00:11:52 +00:00
Brecht Van Lommel
e80b0db58c Fix #34508: particle emitter show/hide option did not work correct after
recent bugfix.
2013-03-03 15:07:18 +00:00
Brecht Van Lommel
69f746d04c Fix #34480: cycles hair render in dupligroup did hide the emitter properly in some cases. 2013-03-01 14:55:30 +00:00
Brecht Van Lommel
41935d10c9 Fix related to #34481: show units for camera aperature radius. 2013-03-01 14:06:20 +00:00
Bastien Montagne
1039135965 More UI messages fixes... 2013-02-28 15:31:20 +00:00
Brecht Van Lommel
0f91a283d4 Fix #34421: cycles viewport render stuck with no objects in the scene. 2013-02-26 17:06:05 +00:00
Thomas Dinges
51f22e639e Code cleanup:
* Cycles: Removed leftover include of "kernel_qbvh.h", which was removed in r51352.
2013-02-21 21:05:31 +00:00
Thomas Dinges
d4c97029ef Cycles GPU Rendering:
* Make Cycles aware of sm_35 (Tesla K20, GeForce GTX TITAN).

The CUDA Toolkit 5.0 is needed for that and this is not officially used yet, but people with access to such cards can start testing. (just build sm_35 kernels).
2013-02-21 17:16:32 +00:00
Thomas Dinges
dc90ce5b6d Cycles GPU rendering:
* Deprecate computing capability 1.3 (sm_13)

This commit disables auto build of sm_13 CUDA platform, which means that starting with Blender 2.67, we don't support sm_13 devices anymore. It has become difficult to support that and it was already feature incomplete (no render-passes, AO, Multi Closure etc).

It's still possible to manually enable sm_13 for own tests, but building might break in the future.
2013-02-21 17:14:07 +00:00
Thomas Dinges
a239700f43 Cycles:
* Code cleanup, remove deprecated support_advanced_shading() functions. Left over from r43734.
2013-02-21 17:10:14 +00:00
Thomas Dinges
3df2b93c6d Cycles Addon:
* Code cleanup
2013-02-21 17:08:13 +00:00
Brecht Van Lommel
4c287f1d4d Fix shadow pass issue with non-progressive render shadow pass with emitting
meshes and world MIS.
2013-02-20 12:10:05 +00:00
Campbell Barton
0528162eb6 patch [#34320] Cross compiling with mingw-w64 on ubuntu
from Martijn Berger (juicyfruit)

applying since this is only corrects header case which is ignored on windows anyway.
2013-02-19 12:05:38 +00:00
Brecht Van Lommel
313dfbe35d Add some more detailed CUDA error prints to try to debug #34166. 2013-02-15 14:54:11 +00:00
Sergey Sharybin
bd1c6571c9 Fix #34205: Zooming in rendered mode during update out of sync with intended zoom
Yes, again.

There's some t within which reset is not allowed. This is so no reset happens
too often for performance issues. If camera changes too often, some reset could
be missed because of this timeout.

For now tag engine for update, which will update viewport from blender side.

Proper solution could be to detect such a changes from blender side and tag
cycles for refresh instead of trying to detect changes form cycles, but that's
for later.
2013-02-15 09:15:14 +00:00
Brecht Van Lommel
b94993941f Fix #34252: cycles rendering 16bit PNG with too light colors. 2013-02-14 21:40:29 +00:00
Brecht Van Lommel
6e03b70def Fix cycles hair curves with NaN values not rendering with dynamic BVH. These NaN
values were breaking the bounding box computation, now they should have no influence.
2013-02-14 21:40:28 +00:00
Thomas Dinges
cb75d64f7d Cycles:
* Compile fix when building without OSL.
2013-02-14 19:30:25 +00:00
Brecht Van Lommel
e0ca72735d Further fix for #34121: OSL + persistent images could crash in some cases still. 2013-02-14 16:48:43 +00:00
Brecht Van Lommel
adbd84c320 Fix #34121: OSL + persistent images option was not freeing shader memory properly,
causing memory to increase continuously during animation render.
2013-02-14 16:11:47 +00:00
Brecht Van Lommel
909d64079a Fix #34226: cycles shadow pass got incorrectly influenced by world multiple
importance sampleing.
2013-02-13 16:46:18 +00:00
Brecht Van Lommel
4061f96d94 Fix cycles issue with BVH cache created with 64 bits and used for 32 bits binary,
and vice versa.
2013-02-13 11:02:51 +00:00
Sergey Sharybin
ae385fb61c Correction for fix #34205: Zooming in rendered mode during update out of sync with intended zoom
Didn't initially notice one possibility when GPU render would fail here,
2013-02-13 07:50:41 +00:00
Brecht Van Lommel
d095bcc8aa Fix cycles not using SSE3 kernel after recent, order with SSE2 should be switched,
pointed out by Chad Fraleigh.
2013-02-12 14:58:46 +00:00
Brecht Van Lommel
45c70acd27 Fix some (quite harmless) use of uninitialized memory reported by valgrind. 2013-02-12 13:48:04 +00:00
Sergey Sharybin
b3b9931276 Fix #34205: Cycles: Zooming in rendered mode during update out of sync with intended zoom
Made sure no pause_cond.wait() happens at the same time as session as resetting.
2013-02-12 13:06:52 +00:00
Brecht Van Lommel
9307565269 Attempted fix for issue with latest CUDA kernel for 32 bit windows/linux/mac,
there seems to be some sort of compiler bug in CUDA toolkit 4.2, uninlining a
few functions seems to avoid it.
2013-02-11 22:41:11 +00:00
Brecht Van Lommel
50f7328fb6 Fix scons win32 link error with OSL, also fix a GLEW linker warning 2013-02-10 20:47:44 +00:00
Brecht Van Lommel
8d4d27de9f Fix #34184: cycles speed vector pass should be zero when using motion blur,
instead it had value 10000.
2013-02-10 18:02:59 +00:00
Campbell Barton
1994ed00a3 add option not to calculate tessellation faces when converting an object to a mesh. (OBJ export no longer needs, so save some CPU cycles and skip tessellation) 2013-02-10 13:44:18 +00:00
Thomas Dinges
8011cbc751 CUDA / sm_20:
* Enable Lamp MIS again, it works on a GTX 570 (which is sm_20) with latest SVN. Tested by vitos1k in IRC:.
Feedback from GTX 580 users would be appreciated on this.
2013-02-06 23:19:14 +00:00