Commit Graph

3420 Commits

Author SHA1 Message Date
Brecht Van Lommel
243e024a63 Fix #19683: rendering with compo nodes but no render layer node crashed. 2009-10-19 11:04:56 +00:00
Brecht Van Lommel
256348eb6b Fix #19657: crash when cancelling volume material render, raytree
is invalid if it cancels during build, so don't use it then.

Also fixes some use of unitialized variables in raytracing code.
2009-10-19 09:54:25 +00:00
Maxime Curioni
3fa9da938f merged changes to revisio 23915
Updated buttons_render.py to have Freestyle buttons
Added "empty" BlenderTextureManager as preliminary step to remove last remnants of OpenGL and to allow Freestyle to run on my machine.
2009-10-18 05:19:46 +00:00
Brecht Van Lommel
29e738f60c Bugfix: deep shadow buffer commit made mixed solid/ztransp rendering
not work correct without OSA.
2009-10-15 09:56:10 +00:00
Brecht Van Lommel
3d57e84088 Bugfix: new bump mapping with UV coordinates wasn't working
correct, my mistake in merging the patch.
2009-10-14 11:17:59 +00:00
Brecht Van Lommel
8884f3fe5c Bugfix: compositing nodes + border render + crop didn't work correct. 2009-10-14 09:40:09 +00:00
Maxime Curioni
dcf1e05440 merges changes to revision 23820 2009-10-14 06:08:48 +00:00
Andre Susano Pinto
f4d2926986 Fix [#19602] Rayshadow that goes through transparent plane disappears
(some bugs may show on other places if some of the code isnt prepared to handle non-normalized is->vec)
2009-10-13 10:52:18 +00:00
Brecht Van Lommel
10198e99ff Deep Shadow Buffer
Since the deep shadow buffer summer of code project is not actively under
development anymore, I decided to build my own DSM implementation from
scratch, based on reusing as much existing shadow buffer code as possible.
It's not very advanced, but implements the basic algorithm. Just enough so
we can do shading tests with it, optimizations and other improvements can
be done later.

Supported:
* Classical shadow buffer options: filter, soft, bias, ..
* Multiple sample buffers, merged into one.
* Halfway trick to support lower bias.
* Compression with user defined threshold.
* Non-textured alpha transparency, using Casting Alpha value.
* Strand render.

Not Supported:
* Tiling disk cache, so can use a lot of memory.
* Per part rendering for lower memory usage during creation.
* Colored shadow.
* Textured color/alpha shadow.
* Mipmaps for faster filtering.
* Volume shadows.

Usage Hints:
* Use sample buffers + smaller size rather than large size.
* For example 512 size x 9 sample buffers instead of 2048 x 1.
* Compression threshold 0.05 works, but is on the conservative side.
2009-10-12 19:41:40 +00:00
Matt Ebb
0c0aa79cb9 * crash fix in volume render, less reliance on global R 2009-10-11 23:04:01 +00:00
Andre Susano Pinto
deb30e8f9e Fix #19571 (reported by Markus Ilmola):
Added missing callbacks. Was leading to crashs when the raytree was empty.
2009-10-10 18:42:20 +00:00
Matt Ebb
0b23e65e86 * more small raytrace fixes 2009-10-09 22:06:23 +00:00
Brecht Van Lommel
a5b30906ad Bugfix: texture nodes render without OSA was using uninitialized
variables, giving incorrect results.
2009-10-09 20:59:44 +00:00
Andre Susano Pinto
208d57323e Fixed #19571
(was crashing when building a raytree from a scene withouth any geometry)
2009-10-08 11:24:06 +00:00
Diego Borghetti
ef13a40fed Makefile: Add missing raytrace directory. 2009-10-07 19:29:39 +00:00
Brecht Van Lommel
cf4f00b2fa Preview Render:
* Fixes for texture and material nodes.
* Texture node previews now work more like materials.
2009-10-07 14:48:29 +00:00
Matt Ebb
f5a9f420fb * More fixes post-raytrace commit 2009-10-07 12:17:29 +00:00
Maxime Curioni
043233943c merged changed to revision 23673 2009-10-07 03:47:36 +00:00
Matt Ebb
91400d9da8 * Fix for crash with new raytree 2009-10-06 23:05:53 +00:00
Guillermo S. Romero
9e38ec2506 Add raytrace subdir to Makefiles.
The makefile is a copy of the source one, not tuned, just to unbreak build.
This raises some questions: why separate dirs? why each build system takes
a different approach (different libs vs all source files into one)?
2009-10-06 17:01:00 +00:00
Andre Susano Pinto
2011ba50c8 Last fix still failed to link under mingw.
This time it works! (gcc and mingw can handle compile and link)
2009-10-06 12:23:25 +00:00
Andre Susano Pinto
ba3ec58d01 *Added memset's to make sure counters start on zero
*Disabled ray counter (can be enabled on render/extern/include/RE_raytrace.h by commenting out the define)
*marked bvh_node_merge() as static inline (hopping it now compiles on gcc and mingw)
2009-10-06 10:52:14 +00:00
Joshua Leung
08deeee455 One last try - this should fix the remaining issues:
* Made bvh_node_merge() in svbvh.h static (fix suggested by jaguarandi). This makes mingw link again.

* Also, patched my previous fix for  ... = {}; since mingw didn't like the other fix (which was for msvc).
2009-10-06 10:32:07 +00:00
Joshua Leung
c93127d06f Some more compile fixes for jaguarandi's commit, this time for msvc+scons
* Replaced ... = {}; with ... = {0}; 

* Solved problem with logf(), where msvc couldn't figure out which version of log() to call (solved by casting the int argument to a float, but could also have been to double)...

* The cflags and cxxflags for scons when compiling the rendering module were only valid for gcc compiles. These will still need to get added for msvc sometime, but for now, there are no more warnings about unknown options...
2009-10-06 10:23:25 +00:00
Matt Ebb
58557ea737 * Cmake fix for raytrace accel, still not 100% but getting there... 2009-10-06 04:37:25 +00:00
Joshua Leung
1c940d7677 Attempts at some compile fixes for jaguarandi's code:
* mingw almost compiles again cleanly, except for a linking error when linking blender http://www.pasteall.org/8297
* win64 should compile again too to a similar degree?
* silenced warnings about no newlines...
2009-10-06 03:40:50 +00:00
Andre Susano Pinto
63a88075b5 svn merge -r 23528:23646 https://svn.blender.org/svnroot/bf-blender/trunk/blender 2009-10-06 01:58:22 +00:00
Andre Susano Pinto
11bdf6ea10 Added #ifdef __SSE__ so it can still build when SSE is disabled at compile time 2009-10-06 00:28:07 +00:00
Andre Susano Pinto
a62e37bfbe blibvh safe for 64bits 2009-10-05 23:30:00 +00:00
Campbell Barton
0f07bea06b remove unused defines, cant check every case but from grepping the souece it should go ok. 2009-10-05 07:08:59 +00:00
Matt Ebb
af522abf33 * changes/additions to volume lighting
Volumes can now receive shadows from external objects, either raytraced shadows or shadow maps.

To use external shadows, enable 'external shadows' in volume material 'lighting' panel. This an extra toggle since it causes a performance hit, but this can probably be revisited/optimised when the new raytrace accelerator is integrated. For shadow maps at least, it's still very quick.

Renamed 'scattering mode' to 'lighting mode' (a bit simpler to understand), and the options inside. Now there's:

- Shadeless
  takes light contribution, but without shadowing or self-shading (fast)
  good for fog-like volumes, such as mist, or underwater effects
  
- Shadowed (new)
  takes light contribution with shadows, but no self-shading. (medium)
  good for mist etc. with directional light sources
  eg. http://vimeo.com/6901636
  
- Shaded
  takes light contribution with internal/external shadows, and self shading (slower)
  good for thicker/textured volumes like smoke
  
- Multiple scattering etc (still doesn't work properly, on the todo).
2009-10-05 02:59:47 +00:00
Andre Susano Pinto
55541d8a81 Added some test_break during the build process.
(Maybe later this should be done with some thread_cancel function instead of doing variable/callbacks tests)
2009-10-04 16:56:00 +00:00
Maxime Curioni
ef6f7bbedb merged changes to revision 23620 2009-10-04 01:21:33 +00:00
Andre Susano Pinto
8da55763b5 *Updated UI options and added UI options to:
control whether instances are used or not
	control whether vertexs are stored localy or not

*Removed unsused code
2009-10-01 18:30:59 +00:00
Brecht Van Lommel
606e609f5d Fix cmake compilation on Windows, adding pthread includes,
patch by Guillaume, thanks!
2009-10-01 17:24:24 +00:00
Brecht Van Lommel
022a343223 Texture stack influences are now all separate values, and negative
mapped values now have their influence negated instead. Also a few
RNA changes for TextureSlot.

Bumped subversion for the version patch.
2009-10-01 17:15:23 +00:00
Martin Poirier
15d81b21f6 Fixing scons compile on windows.
Since bli_threads.h now includes pthreads directly, we need to had instructions in SConscripts everywhere for proper include path.

Frankly, I feel like this should be done in a global manner and not in a per lib fashion, but that is for another day.

This commit also fixes more missing properties
2009-10-01 16:32:33 +00:00
Brecht Van Lommel
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
Matt Ebb
71b3088596 Rework of volume shading
After code review and experimentation, this commit makes some changes to the way that volumes are shaded. Previously, there were problems with the 'scattering' component, in that it wasn't physically correct - it didn't conserve energy and was just acting as a brightness multiplier. This has been changed to be more correct, so that as the light is scattered out of the volume, there is less remaining to penetrate through.

Since this behaviour is very similar to absorption but more useful, absorption has been removed and has been replaced by a 'transmission colour' - controlling the colour of light penetrating through the volume after it has been scattered/absorbed. As well as this, there's now 'reflection', a non-physically correct RGB multiplier for out-scattered light. This is handy for tweaking the overall colour of the volume, without having to worry about wavelength dependent absorption, and its effects on transmitted light. Now at least, even though there is the ability to tweak things non-physically, volume shading is physically based by default, and has a better combination of correctness and ease of use.

There's more detailed information and example images here:
http://wiki.blender.org/index.php/User:Broken/VolumeRendering

Also did some tweaks/optimisation:
* Removed shading step size (was a bit annoying, if it comes back, it will be in a different form)
* Removed phase function options, now just one asymmetry slider controls the range between back-scattering, isotropic scattering, and forward scattering. (note, more extreme values gives artifacts with light cache, will fix...)
* Disabled the extra 'bounce lights' from the preview render for volumes, speeds updates significantly
* Enabled voxeldata texture in preview render
* Fixed volume shadows (they were too dark, fixed by avoiding using the shadfac/AddAlphaLight stuff)

More revisions to come later...
2009-09-29 22:01:32 +00:00
Brecht Van Lommel
15d07720e5 Sorry, three commits in one, became difficult to untangle..
Editors Modules

* render/ module added in editors, moved the preview render code there and
  also shading related operators.
* physics/ module made more consistent with other modules. renaming files,
  making a single physics_ops.c for operators and keymaps. Also move all
  particle related operators here now.
* space_buttons/ now should have only operators relevant to the buttons
  specificially.

Updates & Notifiers

* Material/Texture/World/Lamp can now be passed to DAG_id_flush_update,
  which will go back to a callback in editors. Eventually these should
  be in the depsgraph itself, but for now this gives a unified call for
  doing updates.
* GLSL materials are now refreshed on changes. There's still various
  cases missing, 
* Preview icons now hook into this system, solving various update cases
  that were missed before.
* Also fixes issue in my last commit, where some preview would not render,
  problem is avoided in the new system.

Icon Rendering

* On systems with support for non-power of two textures, an OpenGL texture
  is now used instead of glDrawPixels. This avoids problems with icons get
  clipped on region borders. On my Linux desktop, this gives an 1.1x speedup,
  and on my Mac laptop a 2.3x speedup overall in redrawing the full window,
  with the default setup. The glDrawPixels implementation on Mac seems to
  have a lot of overhread.
* Preview icons are now drawn using proper premul alpha, and never faded so
  you can see them clearly.
* Also tried to fix issue with texture node preview rendering, globals can't
  be used with threads reliably.
2009-09-29 19:12:12 +00:00
Andre Susano Pinto
04fdec2017 svn merge -r 23207:23528 https://svn.blender.org/svnroot/bf-blender/trunk/blender 2009-09-28 13:05:03 +00:00
Andre Susano Pinto
82198721d6 Raycounters fix 2009-09-28 10:25:12 +00:00
Maxime Curioni
ca347a1a3d soc-2008-mxcurioni: merged changes to revision 23516 2009-09-28 06:03:55 +00:00
Maxime Curioni
b24004343f Integrated Freestyle to rendering pipeline 2009-09-28 04:12:06 +00:00
Andre Susano Pinto
1305715d2d *Added VlakPrimitive (this rayobject rimitive only stores ObjectRenderInstance and VlakRen pointers)
- it difers from RayFace that localy stored the vertex coordinates.
- basicaly this reduces memory usage
2009-09-24 22:55:57 +00:00
Campbell Barton
b078503058 imagewrap was using uninitialized vars from do_material_tex
found while looking into a different bug.
2009-09-24 12:27:20 +00:00
Matt Ebb
7b1e5f4d8e * Tweak to fix:
[#8358] Performance regression with raytraced refraction

Now shadows are only sampled once in reflections/refractions. For cases where this would be a problem (perfect specular reflection/refraction), the full OSA takes care of it.
2009-09-23 00:53:30 +00:00
Brecht Van Lommel
6fc4e2d37f Fix #19425: crash with long filename and rendering full sample. 2009-09-21 14:30:59 +00:00
Tamito Kajiyama
be50ce61be Merged
https://svn.blender.org/svnroot/bf-blender/branches/soc-2008-mxcurioni (r22789) and
https://svn.blender.org/svnroot/bf-blender/trunk/blender (r23338)
with the "Ignore ancestry" and "Ignore line endings" options enabled (using
TortoiseSVN on Windows).

After the merge operation, all changes (i.e., deletion) in source/blender/freestyle/
were reverted in order to keep the primary source tree of the Freestyle renderer.
2009-09-18 22:25:49 +00:00
Campbell Barton
c388244be4 Move some static math functions out of paint_image.c into arithb.c
* VecLerp3f and Vec2Lerp3f - interpolate 3 2d/3d vectors from 3 weights
* AngleToLength(angle) - useful for making even width shell/walls based on the angles of the surrounding geometry from each point. (same method used in 2.4x python solidify script).

also quiet some warnings.
2009-09-18 16:39:45 +00:00