Commit Graph

99 Commits

Author SHA1 Message Date
60ff60dcdc RenderEngine API: add viewport draw utility functions to bind a GLSL fragment
shader for converting colors from linear to display space, based on the scene
color management settings.

if engine.support_display_space_shader(scene): # test graphics card support
	engine.bind_display_space_shader(scene)
	# draw pixels ..
	engine.unbind_display_space_shader()
2013-08-30 23:49:35 +00:00
5fc6f04fc8 Cycles / SSS:
* Render Passes are now available for Subsurface Scattering (Direct, Indirect and Color pass). 

This is part of my GSoC project, SVN merge of r58587, r58828 and r58835.
2013-08-03 13:12:09 +00:00
e64937c96d Fix #36091: external render engines like Luxrender don't work well with the save
buffers option, it requires specific tile sizes and if they don't match what
OpenEXR expects file saving can get stuck.

Now I've made support for his optional, with a bl_use_save_buffers property for
RenderEngine, set to False by default.
2013-07-11 12:22:29 +00:00
ab52b15964 Fix #35681: cycles excluded layers still got evaluated before and after
rendering even if they were not used on any render layers.
2013-06-10 13:53:38 +00:00
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
013a176c52 patch [#34103] use booleans for extensions testing.
bli_testextensie.patch - from Lawrence D'Oliveiro (ldo)
2013-03-04 18:36:37 +00:00
537c18a9ce Fix #34414: python error with frame_change callback and Cycles motion blur.
Now the RenderEngine.render callback allows writing blender data again, it
should not be allowed but in practice the API and render threading code is
too limited to make this work at the moment.
2013-02-28 15:33:26 +00:00
cecbb3498b add RNA_def_struct_ptr(...) to use for runtime struct registration, saves over 2000 string lookups on startup and gives overall ~10% speedup for starting blender on my system. 2013-01-09 05:32:15 +00:00
5ee3cd6c86 Remove some uneeded/irrelevant "PROP_TRANSLATE".
This sub-type is actually *only* needed for the "text" property of UI rna api (maybe we should rename it to "PROP_PY_TRANSLATE", as it is anyway only 'active' during conversion from py string to RNA string property...). In fact, I think it should only be used in RNA func properties anyway, as it stores the translated string into the property, it should only be used with "one time" RNA stuff...
2013-01-05 13:52:41 +00:00
2e0e2cb170 Highlight currently rendering tiles
This commit implements highlight of tiles which are being currently
rendered for both Blender Internal and Cycles (and should be possible
to use it for other external engines as well).

Couple of implementation details:

- Added one extra boolean flag to render engine which should be set
  to truth if render engine wants to highlight tiles. If so, property
  use_highlight_tiles should be set to True.

- Render Part's ready boolena was changed by status enum, which could
  be NONE, IN_PROGRESS and READY. All render part with IN_PROGRESS
  status will be highlighted in image editor.

- For external engines render part's status is filling in automatically.
  Initially all render parts has got NONE status, then one external
  engine acquire render result, corresponding part will change status
  to IN_PROGRESS. As soon as render result is finished, corresponding
  render part will change status to FINISHED

  This should make it easy to highlight tiles for other engines as well.
2013-01-01 16:15:13 +00:00
3de85a8797 style cleanup: casts, some casts had odd formatting, but very few. Style checker script detects this now so easy to detect this if new code is added that doesnt follow blenders style. 2012-12-30 15:16:08 +00:00
6eec49ed20 Cycles: memory usage report
This commit adds memory usage information while rendering.

It reports memory used by device, meaning:

- For CPU it'll report real memory consumption
- For GPU rendering it'll report GPU memory consumption, but it'll
  also mean the same memory is used from host side.

This information displays information about memory requested by Cycles,
not memory really allocated on a device. Real memory usage might be
higher because of memory fragmentation or optimistic memory allocator.

There's really nothing we can do against this.

Also in contrast with blender internal's render cycles memory usage
does not include memory used by scene, only memory needed by cycles
itself will be displayed. So don't freak out if memory usage reported
by cycles would be much lower than blender internal's.

This commit also adds RenderEngine.update_memory_stats callback which
is used to tell memory consumption from external engine to blender.
This information is used to generate information line after rendering
is finished.
2012-11-05 08:04:57 +00:00
e02b23b81a Render API: shader script node for custom shaders.
* Shader script node added, which stores either a link to a text datablock or
  file on disk, and has functions to add and remove sockets.
* Callback RenderEngine.update_script_node(self, node) added for render engines
  to compile the shader and update the node with new sockets.

Thanks to Thomas, Lukas and Dalai for the implementation.
2012-11-03 14:32:26 +00:00
f213ae0b19 style cleanup 2012-11-01 09:54:00 +00:00
8a2c30ac57 RNA C++ API improvements
Added support of such features, as:

- Ability to call RNA functions using C++ classes
  For example RenderEngine.tag_update

- Property setters (for scalars and arrays)
  Used Qt/jQuery-like getters/setters style, meaning Class.prop() is a getter,
  Class.prop(value) is a setter.

Still to come:

Collection functions are not currently registering inside a property
Meaning BlendData.meshes wouldn't be a subclass of BlendDataMeshes result
you'll need to explicitly create BlendDataMeshes for now instead of doing
BlendData.meshes.remove()
2012-10-22 17:34:16 +00:00
a99b377167 More UI messages fixes and tweaks, and BKE_report<->BKE_reportf. 2012-10-20 10:28:34 +00:00
397d316ab1 Fix render engine API compatibility breakage in end_result, this parameter
should have been optional.
2012-10-07 00:30:31 +00:00
fb8ffefd1d Revert a small part of r50813, so that we can build (actually, link) with Cycles!
Note: this is marked as hack/todo in cycles code, so it needs a proper fix, but at least it works, for now... ;)
2012-09-22 17:00:02 +00:00
6c1da4d022 code cleanup: make many functions static 2012-09-22 14:07:55 +00:00
068cceab6c fix for some errors reported by http://clang.blenderheads.org/trunk/ in r50384.
- when renderlayers could not be found in save_render_result_tile() blender would crash.
- RE_engine_end_result() / rna end_result() didn't set result argument as required.
... also some style cleanup.
2012-09-04 18:27:47 +00:00
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
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
a9f6e54384 style cleanup: mostly whitespace in rna 2012-05-12 11:01:29 +00:00
6fed4fdd5e Style cleanup (mostly line length, also no final point in tips...). 2012-04-15 13:41:07 +00:00
b219b5294b Fix #30376: cycles ignores camera override from sequencer. 2012-04-13 17:42:03 +00:00
ed43b652ee Code style edits (mostly spliting long lines, and removing trailing spaces).
Note about long lines: I did not touch to two pieces of code (because I don’t see any way to keep a nicely formated, compact code, with shorter lines):
* The node types definitions into rna_nodetree_types.h
* The vgroup name functions into rna_particle.c
2012-03-18 09:27:36 +00:00
0114d78c33 Code cleanup in rna files (huge, higly automated with py script).
Addresses:
* C++ comments.
* Spaces after if/for/while/switch statements.
* Spaces around assignment operators.
2012-03-05 23:30:41 +00:00
f99343d3b8 Cycles: Render Passes
Currently supported passes:
* Combined, Z, Normal, Object Index, Material Index, Emission, Environment,
  Diffuse/Glossy/Transmission x Direct/Indirect/Color

Not supported yet:
* UV, Vector, Mist

Only enabled for CPU devices at the moment, will do GPU tweaks tommorrow,
also for environment importance sampling.

Documentation:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Passes
2012-01-25 17:23:52 +00:00
dca15b215d Cycles: svn merge -r41613:41627 ^/trunk/blender 2011-11-07 17:13:32 +00:00
ac52c79cb1 RenderEngine/Nodes: system to check for shading nodes compatibility
* Scene.use_shading_nodes property to check if RenderEngine is using new shading
  nodes system, and RenderEngine.bl_use_shading_nodes to set this.
* Add mechanism for tagging nodes as being compatible with the old/new system.
2011-11-02 19:24:30 +00:00
97a0ae3e1b RenderEngine api: support for viewport rendering, details here:
http://wiki.blender.org/index.php/Dev:2.6/Source/Render/RenderEngineAPI

* This adds a Rendered draw type in the 3D view, only available when
  the render engine implements the view_draw callback.
* 3D view now stores a pointer to a RenderEngine.

* view_draw() callback will do OpenGL drawing instead of the viewport.
* view_update() callback is called after depsgraph updates.
2011-11-02 18:20:53 +00:00
02fae3440c Cycles: RenderEngine api code tweaks, also ensuring it's backwards compatible. 2011-11-02 15:15:45 +00:00
e07389ccb8 RenderEngine: steps towards implementation of this proposal:
http://wiki.blender.org/index.php/Dev:2.6/Source/Render/RenderEngineAPI

* RenderEngine is now a persistent python object that exists and retains
  properties as long as a frame is being rendered. This is mostly useful now
  that more than one callback will be added.
* Added update() callback that should ideally be used to export the scene,
  leaving only the rendering to the render() callback. This is not required to
  be used at this point, but separating this will make things more thread safe
  later on.
* Added tag_redraw() and tag_update() functions that will be used for viewport
  rendering.
* Internal change: status text is now retained after update_status calls.
2011-11-02 14:33:14 +00:00
79a389ee37 RenderEngine: add .is_animation and .is_preview properties to detect if it's
an animation or preview render that is being done.
2011-11-02 13:36:28 +00:00
4cd1e6337e Cycles: svn merge -r41225:41232 ^/trunk/blender 2011-10-24 22:32:00 +00:00
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
29f279e43d Render API: add update_progress() function to update progress bar progress from
external render engines.

Also refactoring to move some render engine registration stuff out of RNA and
into render module.
2011-10-22 17:01:54 +00:00
1bdf652b89 Code refactoring: move external engine functions into own file. 2011-10-22 16:24:28 +00:00
10af15b85b Cycles: svn merge -r40934:41157 ^/trunk/blender 2011-10-21 20:13:12 +00:00
0e66576f02 replace RNA function string lookups with direct assignments, currently the lookup returns the same pointer every time. some of these functions - panel/operator poll for eg, are called many times per redraw so while not a bottleneck its unnecessary. 2011-10-19 22:40:03 +00:00
d293d74942 Cycles: more tweaks to get old/new shading systems working better together, for
now also made non-material/world/lamp stuff use old texture datablocks, no time
to get this fully working now. Still some python tweaks to do to ensure the right
panels show.
2011-10-15 20:43:45 +00:00
85818c8209 Cycles: add python render engine option to use new shading nodes or not, instead
of hardcoded check for cycles. Also some other minor code cleaning tweaks.
2011-10-11 17:19:55 +00:00
4f33d65ba1 Cycles: svn merge -r40411:40934 ^/trunk/blender 2011-10-11 14:30:53 +00:00
646a397297 add a collection function slot for assignment (not used yet). 2011-10-01 15:40:32 +00:00
c589dec2ea add missing define for last commit and tag bl_label & bl_descriptions for translating too 2011-09-21 14:10:26 +00:00
153e4cad4b Cycles: svn merge -r40266:40358 https://svn.blender.org/svnroot/bf-blender/trunk/blender 2011-09-19 14:20:15 +00:00
1794767171 /blender/makesrna: Removed final points in UI strings and messages.
Plus a few splits of very long lines…
2011-09-19 13:23:58 +00:00
c40492205b Cycles:
* Remove RE_DO_RENDERED again, check for view_draw callback is sufficient.
2011-09-12 11:59:13 +00:00
bf4f793b55 Cycles Render API:
* Show Rendered Viewport Shading only when the engine supports it.
Only enabled for Cycles now.
* Added RenderEngine flag RE_DO_RENDERED, which is an optional flag.
Exposed as bl_use_rendered in Python.

ToDo: When you are in Rendered mode and change to a engine which does not support it, the enum doesn't set properly to OB_SOLID.
2011-09-11 23:44:20 +00:00
c7fce6be2e Cycles: svn merge -r39132:39457 https://svn.blender.org/svnroot/bf-blender/trunk/blender 2011-08-16 18:59:45 +00:00