Commit Graph

98 Commits

Author SHA1 Message Date
bc8f602601 style cleanup 2012-10-20 18:46:57 +00:00
ddcc3f612a Fix #32603: Multi-Layer EXR files can't be color managed
Issue was caused by completely different way how multi-layer EXRs are loading,
they're bypassing general image buffer loading functions.

Solved by running color space transformation on render result construction
from multi-layer EXR image.

Also fixed issue with wrong display buffer computing for buffers with less
than 4 channels. Issues were:

- Display buffer is always expected to be RGBA
- OpenColorIO can not apply color space transformations on non-{RGB, RGBA}
  pixels.
2012-09-20 10:07:49 +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
8a1a4a453d Tie compositor will now update render result when changing node setup
Issue was caused by the way how render result was acquiring -- pointer
to render data was used to find needed render descriptor. It's not
reliable since render contains copy of scene's render data, not pointer
to this data.

Use node scene's id name for render result acquiring, the same way
as it was done in old compositor system.
2012-08-01 13:59:08 +00:00
2c8db87897 fix [#32020] Image will not render in second (any scene other than first) if scene name is longer than 28 characters 2012-07-08 00:04:41 +00:00
0b0ac3aa9e remove scene from new compositor classes. only needs RenderData 2012-06-22 15:06:52 +00:00
07b2241fb1 Cycles: merging features from tomato branch.
=== 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.
2012-04-28 08:53:59 +00:00
ce4eb57301 fix [#30653] Wrong image at UV/Image Editor window
render results would be displayed on loading new files if the scene names matches, now free render-results so as not to display stale data - also saves some memory.
2012-03-26 08:10:12 +00:00
89a963fb7f style cleanup: comment blocks 2012-03-09 18:28:30 +00:00
2b7ca2304a unify include guard defines, __$FILENAME__
without the underscores these clogged up the namespace for autocompleation which was annoying.
2012-02-17 18:59:41 +00:00
de4befb075 Code refactoring: split render result related functions into separate file. 2012-01-05 17:50:09 +00:00
da25b50ccb image save operator now shares settings and UI with render & image out node.
details:
- setting format options from python isnt possible anymore since this isnt exposed via op->properties, python should use image.save() function instead.
- image save UI now hides 'Relative' option when copy is selected since it has no effect.
- default image depth is set to 8 or more if the image has no float buffer, otherwise its set to 32 or less.

other fixes:
- image new was adding an image with a filepath set to "untitled", if this file happened to exist in the current directory a save on the generated image would overwrite it, now initialize to empty path.
- BKE_ftype_to_imtype was returning an invalid value if ftype==0.
2011-11-21 23:56:32 +00:00
539c94a051 Camera: some code refactoring, use an intermediate CameraParams struct instead
of long list of variables everywhere. Intention is to also let 3d view use this
eventually, instead of duplicating code.
2011-11-18 15:52:00 +00:00
e84c0980a3 correct indentation and some whitespace edits (no functional changes) 2011-11-11 13:09:14 +00:00
224c26f891 Fix #28998: sequence rendering with wrong progress bar
Show overall progress when doing sequence rendering. Nice for cases when
you're using sequencer to combine video strips only, without rendering
scenes and so. If scene strips are used in sequencer, per-frame rendering
would be used (because of scene rendering sets per-frame progress).
2011-11-03 17:06:12 +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
1bdf652b89 Code refactoring: move external engine functions into own file. 2011-10-22 16:24:28 +00:00
c58a0c5eb8 catch exception and report an error when failing to write exr files - was crashing with debug builds. 2011-08-30 23:08:38 +00:00
0e01fa4863 patch [#28355] Better Environment Map scripting
from Tom Edwards (artfunkel), with minor edits.

This patch makes the following improvements to environment map scripting:

* Adds a "is_valid" RNA property to envmaps. True if the map is ready for use, False if it needs rendering.
* Adds a "clear" RNA function to envmaps. Deletes any envmap image data.
* Adds a "save" RNA function to envmaps. Writes the envmap to disc with a configurable layout. (Defaults to the current hard-coded layout.)
* Updates bpy.ops.texture.envmap_save with configurable layout support as above.

These changes, particularly configurable layouts, make exporting envmaps to other software much easier.
2011-08-28 23:24:34 +00:00
bad785cce4 minor edits, no functional change. 2011-06-30 01:40:20 +00:00
8ddd2db648 RenderEngine API: add self.report() error reporting function for render engines,
works the same as for operators. Also includes some refactoring of render error
reporting code to use ReportList.
2011-06-28 16:25:07 +00:00
f6de4fecfa Bugfix #27519
Full Sample AA (FSA) was failing in cases. Bug report was an empty
scene (with compo nodes) linking in another .blend scene (with render).

That case gave warning "FSA not supported with rendering". That now is
allowed.

Then I noticed FSA was giving corrupt sample buffers or crashes in cases, 
especially on first buffer, this appeared to be a missing compo tag on 
first sample buffer.

Lastly, to make FSA render a tiny bit less frustrating: added render window
statistic to show which of the FSA steps is being done.
2011-06-12 13:35:17 +00:00
7e6520c080 additional bake modes
(refined patch #23430)

+ specular color
+ specular intensity
+ mirror color
+ mirror intensity
+ alpha (tranparency)
+ emission (glow)
2011-05-18 07:46:54 +00:00
abcdf9573a add back support for rendering local view camera. 2011-04-30 04:29:36 +00:00
11920f7880 Bugfix #26195
When rendering, during processing scene data, drawing in 3d window
is now locked. Can get extended to more areas in UI easily.

At least this solves all crashes with conflicting memory access in
render && 3d drawing. Deleting objects via operators or delete 
modifiers isn't locked yet.

Also fixed: crash on quitting a renderwindow when it was rendering.
2011-03-25 17:11:32 +00:00
Nathan Letwory
8c8ae3dedf doxygen: entry for gpu, modifiers, nodes, python and render 2011-02-21 06:58:46 +00:00
e511f9fac4 add back options for loading a renderlayer to offset the image when copying the buffer to a smaller renderlayer.
This was reverted by Brecht r22541 because its inefficient but there is no way to work around this with povray at the moment so adding it back as optional args.
2011-02-08 10:31:47 +00:00
89c9aaaa25 remove references to BKE_utildefines where its not needed.
- move GS() define into DNA_ID.h
- add BLI_utildefines as an automatic include with makesrna generated files.
2011-01-07 19:18:31 +00:00
263830f000 Enabled GCC -Wwrite-strings warning for CMake and replaced many 'char's for 'const char's,.
Only one functional change where Transform orientations passed "" to BIF_createTransformOrientation() which could then have the value written into.
2010-12-03 17:05:21 +00:00
51dcbdde03 use 'const char *' by default with RNA functions except when the value is flagged as PROP_THICK_WRAP.
Also use const char in many other parts of blenders code.

Currently this gives warnings for setting operator id, label and description since these are an exception and allocated beforehand.
2010-11-17 09:45:45 +00:00
1e245cc589 option to write images to a files on single frame renders, this isn't accessed by the UI at the moment, but could eventually be used for saving test-renders.
The main reason to have this is so renders can be scripted to write to a specific file without having to do annoying tricks like set a dummy start/end frame range, render an animation and work out the current frame image will be written to, then rename after rendering.

Also made some 'char *' args into 'const char *'
2010-11-16 14:40:46 +00:00
b350954501 [#23095] If no camera is present, a render starts but does nothing, and we have no "No camera" warning
Improve camera checking and move it before starting render jobs
2010-11-03 13:10:09 +00:00
1f2469d992 bugfix [#24508] Render and changing scenes crashes.
The scenes 'Render' is kept by blender while blender runs but the callbacks were not cleared when the render was done.
In this case the callback would reference a freed render job.

This isn't normally a problem because on re-rendering new callbacks are set, however the sequencer can render a previously rendered scene without setting up callbacks.
Simple fix is to to dummy callbacks applied onto the scenes 'Render' struct once its finished.
2010-11-03 11:14:02 +00:00
06abc862b0 Fix crashing running read full sample layers operator. 2010-10-31 11:51:10 +00:00
e81df3a6fa Fix #23238: crash rendering multiple scenes from compositor. 2010-08-12 13:58:10 +00:00
9b006d6d00 Fix preview render crash after recent G.main changes. 2010-08-01 20:36:24 +00:00
5fa7d1c1b4 2.5: code changes to reduce the usage of G.main and pass it along
or get it from the context instead.
2010-08-01 12:47:49 +00:00
358738c1aa Fix #22354, #22727, #22501: image window not display correct
renders with compositing and slots.
2010-07-07 14:28:22 +00:00
6e92ddf8b3 Progress indicators for threaded jobs
Now, rather than the bit-too-alarming stop sign, threaded wmJobs 
display a progress indicator in the header. This is an optional feature
for each job type and still uses the same hardcoded ui template
(could use further work here...).

Currently implemented for:
Render - parts completed, then nodes comped
Compositor - nodes comped
Fluid Sim - frames simulated
Texture Bake - faces baked

Example: http://mke3.net/blender/devel/2.5/progress.mov
2010-05-27 08:22:16 +00:00
9822e07be6 Attempted fixes for render crashes on windows, still can't redo them here
in a virtual machine, maybe that has some different threading behavior.
Also should fix a problem with displaying render passes and multiple slots.
2010-04-01 12:51:24 +00:00
0eaa89971f External render engines now have option bl_postprocess to determine
if compositing, sequencer, fields, etc should be rendered, or if the
render does that itself. The weak point is that this only applies to
rendering, so if you open the compositor, it will still run on the
rendered result. Enabled by default, set to False to disable.
2010-03-28 14:45:09 +00:00
7aab31430f External render engines can now render previews as well, disabled by
default, set RenderEngine property bl_preview = True to enable it.
2010-03-28 13:48:11 +00:00
57101c4fd2 Second attempt at committing the different render slot implementation. This
has a fix that hopefully solves the problem on mac/win. Also fixes #21322,
render slots not working well with FSA.
2010-03-27 15:35:34 +00:00
ed076d74ef Rendering from 3d view in local view or with unlocked layer was not
working yet, now layer is passed along to render engine, changes quite
a few files because simple swapping trick no longer works with threading.
2010-03-14 20:24:11 +00:00
ad01c90ee3 Revert render slots commit for release, I can't find the bug or even redo
it myself, there will still be render slots just old implementation.
2010-02-16 19:24:04 +00:00
2061f91741 Render Slots: change the implementation by moving it from the render to the
image code, this should be clearer and makes reusing the Render struct later
on easier.
2010-02-16 15:49:22 +00:00
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
10240261e9 J-key render switching back, now with 10 slots.
Implementation note: this was done by giving each Render a slot number,
and for every slot a new Render will be created. Not sure if this is
ideal, but it ensures that all passes, render info, etc are separate so
you can also compare render layers and passes, in 2.4x only whatever it
was currently displaying was backed up.
2010-02-09 19:37:37 +00:00
06e6011ae9 Restored Compositor 're-render single layer' functionality (buttons on renderlayer comp nodes).
This works with operator properties - if you pass the name of a scene and renderlayer to 
the screen.render operator, it will render that layer as a single layer re-render.
2010-01-06 00:09:07 +00:00
d653192751 Reports: writing movies now uses the reports mechanism to throw errors.
Also fixes bug #19463: screencast to xvid ffmpeg crash.
2009-12-22 12:01:32 +00:00