Commit Graph

18 Commits

Author SHA1 Message Date
908061378c * fix for colour management, compositor image node wasn't working correctly. There are a few other issues around here I need to get to eventually as well.. 2009-10-21 00:33:08 +00:00
fd511eb984 Node Bugfixes:
* Compo node backdrop works again.
* Compo node previews and backdrop now get correct color management
  float to byte conversion.
* Compo nodes got unecessarily recalculated while moving nodes.
* Fix compo node viewer nodes not getting activated correctly.
* Main compo node preview render computations are now outside of
  mutex lock, so better for multithreading.
* Tex node outputs did not work in some files loaded from 2.4.
* Change RNA updates to take into account groups that may be shared
  between multiple node trees.
2009-10-07 22:05:30 +00:00
b466286c3e Render & Compositing Thread Fixes
* Rendering twice or more could crash layer/pass buttons.
* Compositing would crash while drawing the image.
* Rendering animations could also crash drawing the image.
* Compositing could crash 
* Starting to rendering while preview render / compo was
  still running could crash.
* Exiting while rendering an animation would not abort the
  renderer properly, making Blender seemingly freeze.
* Fixes theoretically possible issue with setting malloc
  lock with nested threads.
* Drawing previews inside nodes could crash when those nodes
  were being rendered at the same time.

There's more crashes, manipulating the scene data or undo can
still crash, this commit only focuses on making sure the image
buffer and render result access is thread safe.


Implementation:
* Rather than assuming the render result does not get freed
  during render, which seems to be quite difficult to do given
  that e.g. the compositor is allowed to change the size of
  the buffer or output different passes, the render result is
  now protected with a read/write mutex.
* The read/write mutex allows multiple readers (and pixel
  writers) at the same time, but only allows one writer to
  manipulate the data structure.
* Added BKE_image_acquire_ibuf/BKE_image_release_ibuf to access
  images being rendered, cases where this is not needed (most
  code) can still use BKE_image_get_ibuf.
* The job manager now allows only one rendering job at the same
  time, rather than the G.rendering check which was not reliable.
2009-09-30 18:18:32 +00:00
1ef7293585 Colour Management
- 1st stage: Linear Workflow

This implements automatic linear workflow in Blender's renderer. With the 
new Colour Management option on in the Render buttons, all inputs to the 
renderer and compositor are converted to linear colour space before 
rendering, and gamma corrected afterwards. In essence, this makes all 
manual gamma correction with nodes, etc unnecessary, since it's done 
automatically through the pipeline.

It's all explained much better in the notes/doc here, so please have a look:
http://wiki.blender.org/index.php/Dev:Source/Blender/Architecture/Colour_Management

And an example of the sort of difference it makes:
http://mke3.net/blender/devel/rendering/b25_colormanagement_test01.jpg

This also enables Colour Management in the default B.blend, and changes the 
default lamp falloff to inverse square, which is more correct, and much 
easier to use now it's all gamma corrected properly.

Next step is to look into profiles/soft proofing for the compositor.

Thanks to brecht for reviewing and fixing some oversights!
2009-07-17 02:43:15 +00:00
f7cb86df3a 2.5
Think global, act local!

The old favorite G.scene gone! Man... that took almost 2 days.
Also removed G.curscreen and G.edbo.

Not everything could get solved; here's some notes.
- modifiers now store current scene in ModifierData. This is not
  meant for permanent, but it can probably stick there until we
  cleaned the anim system and depsgraph to cope better with
  timing issues.
- Game engine G.scene should become an argument for staring it.
  Didn't solve this yet.
- Texture nodes should get scene cfra, but the current implementation
  is too tightly wrapped to do it easily.
2009-01-04 14:14:06 +00:00
274543627a Fix segfault with bad setting in the Image node.
The limit in the UI tooltips to set the amount of
images used in animation allow the zero value,
that cause a segfault.

This commit fix the UI, add a init value of 1 to
the node and also check in case that
node_composit_get_image return NULL.
2008-02-28 20:26:00 +00:00
0e233b3213 =Reversion of premul bugfix=
Reversion of premul bugfix, as it was apparently not
working all that well.

Note that this brings back the bug where the erase alpha
paint tool won't display correctly, since the UV image
editor just draws images in key alpha now.
2008-02-22 22:23:58 +00:00
ccac67d3ea Further work on the premul option for ton. This option
(which basically tells the renderer and compositor to expect a
key image) is now done at the image user level.

This does have some caveats, as image users don't always work
the way I thought they would/should (for example, the same image user
structure is apparently used in the uv image editor for all images,
which is kindof odd).

The UV image editor also now smartly detects if the premul option is
set and draws the image using key alpha, instead of premul

The subversion level was upped to convert the old premul flag, which was at
the image level, to the new one, which is at the image user level.
2008-02-18 23:50:12 +00:00
0ef89331e2 Fix for theoretical memory leak. Oddly this leak didn't seem
to be happening, but might as well fix it anyway.
2008-02-15 09:42:25 +00:00
4b784f4311 stupid me! if you move var declarations sometimes you have to add
assignments outside of the var declarations!
2008-02-14 15:14:01 +00:00
09cb8a9f42 in my tiredness I didn't declare some vars at the top of the block. 2008-02-14 14:57:41 +00:00
ac5d28a13c Added another 2 checks for if an image has the premul flag set, 1 in the image
compositor node, another in render_realtime_texture.  Note that multilayer images 
in the image compositor node do not respect the premul flag (though I did write 
commented out code for it).

As far as I can tell, the premul option never worked for multilayer images in the
image node, so I'm a little nervous about making it work properly there.

ton, any comments?
2008-02-14 13:36:59 +00:00
c8841a7f2f Added new render pass: "Mist".
This is actually just the alpha value as currently being calculated
by the mist code. It is in many cases not very useful to have this as
alpha in shading result, also for postprocess and composite.

Note: this pass also works with "Mist" not set in World, of course.
2008-01-19 11:17:12 +00:00
Nathan Letwory
fb0f61c0b0 === Node editor ===
* refactor copying and freeing of node->storage by handlerizing them.
  - freestoragefunc
  - copystoragefunc
  - node_util.c/h have generic handlers for these.
2007-04-04 13:58:12 +00:00
5c760e4811 Changed node type definitions to use a dynamic list.
This will allow python or plugin defined nodes to work as well.
(And fixes compile issues with MSVC in yesterdays commit for nodes)

Code provided by Nathan L.
Fixes in his code:
- free_nodesystem() was called too late (after guarded alloc was closed)
- free_nodesystem() was freeing nodes that were not malloced even
- free_nodesystem was using free, not freeN :)
- the typedefs needed to be malloced yes, to allow duplicate nodes like
  group but also for dynamic nodes.
2007-03-26 15:07:38 +00:00
c1e9018118 All UI code reverted to drawnode.c 2007-03-25 23:54:39 +00:00
808a5fc05a Scons build system. MSVC 7.1 in a moment. 2007-03-24 18:41:54 +00:00
611d1c523c Initial commit. Not in build system so shouldn't interfere with anything at this point. Will commit modified versions of existing files once build system is tested. 2007-03-24 06:57:29 +00:00