Commit Graph

139 Commits

Author SHA1 Message Date
2c31bce47f Fix #36555: preview render in properties editor did not get cancelled and
restarted fast enough on resizing the editor, especially noticeable with
e.g. luxrender which does a progressive refining render.
2013-08-28 19:22:48 +00:00
33a9cb6caa minor changes for confusing code.
- memset() was argument was truncated.
- outliner had redundant NULL check.
- node texture was allocating memory to make a unique name which isnt needed for a fixed size string.
2013-07-29 04:45:40 +00:00
3f34a88fc8 Fix #36075: editing shading nodes could still crash blender internal rendered
draw mode. This happens because it uses node data structures in threads, now
it does same as preview render, which is to immediately stop the render thread
when e.g. deleting nodes.
2013-07-10 01:05:56 +00:00
a4b5c05aad Fixes for blender internal viewport render:
* Particles did not render at viewport resolution like meshes.
* Properties editor preview render of hair was crashing, solution is to have
  two separate flags for this preview render and viewport preview render.
2013-05-15 17:09:45 +00:00
5fcf9b1d2f 3D viewport render preview:
- Put it available as a default now (no debug value needed)
- Fixed viewport size error, viewport was badly set
  (visible with border render, property regions)
- Fixed hanging lock in conflict between drawing and initialize
  new renders.
2013-05-12 13:15:41 +00:00
608dc78241 warning cleanup: assignment to unused vars, r56359 changes how brush falloff is used slightly but this isn't so important so just remove falloff adjustment. 2013-04-28 15:37:18 +00:00
f0fb5db329 Fix preview render not starting in some cases, now starts the preview rendering
job if no render result is found and no preview render job is already running.
2013-04-26 13:47:57 +00:00
04c8d8b919 Fix blender internal preview rendering continuously restarting after recent
viewport render changes.

Actually was an older issue that would cause unnecessary preview render restarts
if the render result was not allocated before it was drawn. Now the render result
is being reallocated each time for freestyle which made the issue worse.
2013-04-24 19:21:14 +00:00
ae58968e0a Blender Internal Render in viewport
Because of our release soon, feature has been added behind the Debug Menu.
CTRL+ALT+D and set it to -1. Or commandline --debug-value -1.

When debug set to -1, you can put the viewport to 'render' mode, just like
for Cycles. Notes for testers: (and please no bugs in tracker for this :)

- It renders without AA, MBlur, Panorama, Sequence, Composite
- Only active render layer gets rendered. Select another layer will re-render.
- But yes: it works for FreeStyle renders!
- Also does great for local view.
- BI is not well suited for incremental renders on view changes. This only
  works for non-raytrace scenes, or zoom in ortho or camera mode, or for 
  Material changes. In most cases a full re-render is being done.
- ESC works to stop the preview render.
- Borders render as well. (CTRL+B)
- Force a refresh with arrow key left/right. A lot of settings don't trigger
  re-render yet.

Tech notes:

- FreeStyle is adding a lot of temp objects/meshes in the Main database. This
caused DepsGraph to trigger changes (and redraws). I've prepended the names
for these temp objects with char number 27 (ESC), and made these names be
ignored for tag update checking.

- Fixed some bugs that were noticable with such excessive re-renders, like 
  for opening file window, quit during renders.
2013-04-16 17:39:20 +00:00
04680a0340 Fix for r55961 which revered texture icons fix at r55499
Reported by Antony Riakiotakis, thanks!
2013-04-14 14:54:08 +00:00
6569ab813f Fix for material icon rendering with cycles
Materials icons used to miss transparent background
and were using world environment which didn't give
so nice results.

Reviewed by Brecht, thanks!
2013-04-11 12:49:57 +00:00
93ac968db3 code cleanup: include order 2013-04-05 17:56:54 +00:00
88683ce71c Fix #34720: Sculpt mode T panel has no texture preview
Cycles was not able to render texture icons, same actually
goes to lux. Now made it so blender internal is used to render
icons for textures.
2013-03-22 09:42:16 +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
09c41019a8 use const pointers for file loading and booleans for animation system return values passed as pointers. 2013-03-17 19:13:04 +00:00
d9c9209608 code cleanup: quiet some -Wshadow warnings, mix of obvious mistakes and harmless global/local naming conflict. 2013-03-15 22:55:10 +00:00
ddddb7bab1 code cleanup: favor braces when blocks have mixed brace use. 2013-03-09 03:46:30 +00:00
f2bb536994 code cleanup: also change BKE_blender.h BLENDER_VERSION_CHAR to 'a' so as not to confuse things. 2013-03-05 14:47:49 +00:00
f44b54d2a7 patch [#34103]
from Lawrence D'Oliveiro (ldo)

More use of bool type, necessitating adding inclusion of BLI_utildefines.h, or moving it up in the inclusion order if it was already included, in various places
- storage.c: make some variables only used in bli_builddir local to that
- storage.c: BLI_file_descriptor_size should allow 0 as a valid file descriptor
- path_util.c: make pointers to non-reentrant storage returned from folder routines const, necessitating making variables holding these returned pointers const elsewhere as well
- path_util.c: BLI_string_to_utf8 closes iconv context in case of conversion error
-  blf_lang.c: fill_locales routine now has its own "languages" local variable to construct paths (was stealing internal storage belonging to BLI_get_folder before)
2013-03-05 03:17:46 +00:00
7891a92651 Fix for texture preview render with show alpha enabled, now it shows no
transparency when use alpha and calculate alpha are disabled.

It's a bit arbitrary as it's not possible to fully visualize the output
of a texture, that depends on how it's used in the texture stack, but this
is a bit more in line with what you might expect.
2013-03-04 16:37:05 +00:00
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
a47af30561 Fix #34240: cycles material preview of sphere + sky had black sky, now it uses
the current scene world.
2013-02-14 16:01:34 +00:00
6886ad2680 Preview image render was missing image buffer release
Reported by Ton in IRC, thanks! Was hunting this one for ages!
2013-02-12 15:49:48 +00:00
261295180c Fix #34209: Texture preview in brush settings does not update
Was a regression since Cycles preview implementation.

Texture preview would be fine now if Blender Internal render is used,
but seems it's not impossible to support textures preview if Cycles
is set as render engine.

Would check on this a bit further.
2013-02-12 10:07:37 +00:00
757546036c Cycles: disable unnecessary preview render job for per node previews, they don't
work so was just wasting CPU time.
2013-01-31 15:31:47 +00:00
5ac4b38a20 Cycles: preview rendering support for world/material/lamp.
Patch by Sergey, .blend by Thomas and some further tweaks by me.

Still to solve later: allow external engines to specify own preview .blend, for
now the code here is doing too much magic hacking on the preview scene still.
2013-01-28 17:37:51 +00:00
6747dec926 style cleanup 2013-01-07 03:24:22 +00:00
bbd95fafef Three fixes:
- Old issue: on scrolling button views, tooltips could open or stayed open.

- New fix: alt+swipe now changes button values again

- Removed test print, from WIP code project.
2013-01-06 18:28:39 +00:00
c6a0818642 Removal of old code trying to detect trackpads.
This was causing error in previous commit "wheel only worked after using trackpad once".
2013-01-05 18:23:05 +00:00
1005cdc72a Trackpad pans for UV/Image and MovieClip editors were inverse compared to all other editors. 2013-01-05 17:57:17 +00:00
247c7078bc Bug fixes, own collection.
While examining icons, I noticed material icons were too dark.
It appeared a lot of bad hacks were added for colormanagement in preview render.

Removed them all, and things look smooth (yes, color management is OK!).

However! It is now very clear that Procedural Textures miss getting inverse
color managed in render - a reason why they show so bright washed out, already
since introduction of Color Management in Blender.

Try render a plane with linear black-white blend, shadeless!
http://www.blender.org/bf/Untitled.png

Todo: add colormanaged procedurals (optional).
2013-01-01 19:02:08 +00:00
08cea96ab0 Alpha premul pipeline cleanup
This assumptions are now made:
- Internally float buffers are always linear alpha-premul colors
- Readers should worry about delivering float buffers with that
  assumptions.
- There's an input image setting to say whether it's stored with
  straight/premul alpha on the disk.
- Byte buffers are now assumed have straight alpha, readers should
  deliver straight alpha.

Some implementation details:

- Removed scene's color unpremultiply setting, which was very
  much confusing and was wrong for default settings.
  Now all renderers assumes to deliver premultiplied alpha.

- IMB_buffer_byte_from_float will now linearize alpha when
  converting from buffer.

- Sequencer's effects were changed to assume bytes have got
  straight alpha. Most of effects will work with bytes still,
  however for glow it was more tricky to avoid data loss, so
  there's a commented out glow implementation which converts
  byte buffer to floats first, operates on floats and returns
  bytes back. It's slower and not sure if it should actually
  be used -- who're using glow on alpha anyway?

- Sequencer modifiers should also be working nice with straight
  bytes now.

- GLSL preview will predivide float textures to make nice shading,
  shading with byte textures worked nice (GLSL was assuming straight
  alpha).

- Blender Internal will set alpha=1 to the whole sky. The same
  happens in Cycles and there's no way to avoid this -- sky is
  neither straight nor premul and doesn't fit color pipeline well.

- Straight alpha mode for render result was also eliminated.

- Conversion to correct alpha need to be done before linearizing
  float buffer.

- TIFF will now load and save files with proper alpha mode setting
  in file meta data header.

- Remove Use Alpha from texture mapping and replaced with image
  datablock setting.

  Behaves much more predictable and clear from code point of view
  and solves possible regressions when non-premultiplied images were
  used as textures with ignoring alpha channel.
2012-12-31 13:52:13 +00:00
5c6f6301b0 Image thread safe improvements
This commit makes BKE_image_acquire_ibuf referencing result, which means once
some area requested for image buffer, it'll be guaranteed this buffer wouldn't
be freed by image signal.

To de-reference buffer BKE_image_release_ibuf should now always be used.

To make referencing working correct we can not rely on result of
image_get_ibuf_threadsafe called outside from thread lock. This is so because
we need to guarantee getting image buffer from list of loaded buffers and it's
referencing happens atomic. Without lock here it is possible that between call
of image_get_ibuf_threadsafe and referencing the buffer IMA_SIGNAL_FREE would
be called. Image signal handling too is blocking now to prevent such a
situation.

Threads are locking by spinlock, which are faster than mutexes. There were some
slowdown reports in the past about render slowdown when using OSX on Xeon CPU.
It shouldn't happen with spin locks, but more tests on different hardware would
be really welcome. So far can not see speed regressions on own computers.

This commit also removes BKE_image_get_ibuf, because it was not so intuitive
when get_ibuf and acquire_ibuf should be used.

Thanks to Ton and Brecht for discussion/review :)
2012-11-15 15:59:58 +00:00
7b60529517 Bugfix #33092
Fluid sim would stop or crash with node editor.

Bug was a real bad one - the code for giving out WM jobs was messed up for long.
It was giving a running fluid job to the compositer even... tsk!

I will go over jobs code carefully next days to see if it all behaves. Now it
allows per owner multiple jobs, provided it has different job_type set.

Also fixed: preview renders (material) were deadslow once a while - caused
by icon render setting miniature tile render sizes. Now it's fast again,
but there are still 3 icon jobs running per UI change... need to check what.
2012-11-06 15:54:04 +00:00
759ea40787 Render engines: replace number of x/y tiles with tile size
Now tile size is setting up explicitly instead of using number of tiles.

This allows better control over GPU performance, where having tiles aligned
to specific size makes lots of sense.

Still to come: need to update startup.blend  to make tiles size 64x64.
2012-11-05 08:05:14 +00:00
fec81d9b56 use min_ max_ functions in more places.
also fix minor error in MOD decimate when the modifier did nothing the reported face count would be wrong.
2012-10-23 16:21:55 +00:00
f3ece5a108 style cleanup: trailing tabs & expand some non prefix tabs into spaces. 2012-10-21 05:46:41 +00:00
a798623fff Bugfix [#32865] Usercounts for World Textures not decremented after preview
render

When adjusting settings for world textures (with Both/World preview modes),
every tweak would result in the usercount of the texture increasing. As a
result, before long the texture would claim to have over 100 users. Fortunately,
this only appeared to be just a cosmetic issue (i.e. no real memory leak here),
though it was a bit unsettling.

NOTE: this is still a bit glitchy, as now we have flickering when updating
texture settings - the texture still temporarily has a second user during
preview rendering.
2012-10-13 01:19:23 +00:00
9829ba31b9 Color Management: fixed color management-less texture rendering
There was a missing check for whether color management enabled or not when
converting byte textures to linear space.

This commit also fixes wrong texture preview rendering, which was applying
sRGB transform twice, making procedural textures bright. This will make
float textures being previewed dark (in a linear space) but that's how it
used to behave in pre-OCIO color management.
2012-10-10 05:56:49 +00:00
e7089c0643 Disable render part of display transformation for icon/texture preview
This change mainly caused by too dark icon generated for texture brushes,
but also makes it a bit more straightforward from what's going on point of view.
2012-10-01 12:41:20 +00:00
232571c61a code cleanup: replace macro for BLI_rect size/center with inline functions. 2012-09-15 11:48:20 +00:00
a73dd3476e Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.

This introduces two configurable color spaces:

- Input color space for images and movie clips. This space is used to convert
  images/movies from color space in which file is saved to Blender's linear
  space (for float images, byte images are not internally converted, only input
  space is stored for such images and used later).

  This setting could be found in image/clip data block settings.

- Display color space which defines space in which particular display is working.

  This settings could be found in scene's Color Management panel.

When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.

This conversions are:

- View, which defines tone curve applying before display transformation.
  These are different ways to view the image on the same display device.
  For example it could be used to emulate film view on sRGB display.

- Exposure affects on image exposure before tone map is applied.

- Gamma is post-display gamma correction, could be used to match particular
  display gamma.

- RGB curves are user-defined curves which are applying before display
  transformation, could be used for different purposes.

All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.

This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).

Some technical notes:

- Image buffer's float buffer is now always in linear space, even if it was
  created from 16bit byte images.

- Space of byte buffer is stored in image buffer's rect_colorspace property.

- Profile of image buffer was removed since it's not longer meaningful.

- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
  to support other spaces, but it's quite large project which isn't so
  much important.

- Legacy Color Management option disabled is emulated by using None display.
  It could have some regressions, but there's no clear way to avoid them.

- If OpenColorIO is disabled on build time, it should make blender behaving
  in the same way as previous release with color management enabled.

More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management

--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
7a13bc2196 Fix wrong user counter in world node trees
World is being localized without increasing ID users, so no need
to decrease ID users on localized world free.
2012-08-29 12:47:42 +00:00
b0dd030ba6 Fixed regression introduced in 50107
Shader preview job localizes material without referencing it as a user,
so don't need to unreference itself as a user from this material.

Added BKE_material_free_ex function which could skip user dereferencing.
This also removed old hack with mtex users.
2012-08-22 17:22:04 +00:00
77f47799dd code cleanup: use BLI_RCT_SIZE macro 2012-08-20 23:06:17 +00:00
15bd03f958 fix for missing change to fluidsim from last commit and name jobs a more useful name - 'wm_job'. 2012-08-15 10:03:29 +00:00
97859e8709 add wm job types they are not used yet, so this just defines them for new jobs add add argument to search by job type. 2012-08-15 09:42:06 +00:00
c567cf3fab code cleanup: WM naming conventions 2012-08-11 21:35:24 +00:00
f0951f58ca code cleanup: rename G.afbreek --> is_break, G.rendering --> is_rendering 2012-08-08 18:37:06 +00:00
9ff4fa6671 style cleanup 2012-08-04 12:30:16 +00:00