Commit Graph

841 Commits

Author SHA1 Message Date
5219b56e92 Phase one of better masking support while rendering.
Problem: artist wants character to walk in grass, but still have all rendered
in seperate render-layers, for postpro effects and vblur. How to efficiently
create a mask image you can put *over* the character for the grass?

Solution has two parts; this commits allows any layer inside of the renderlayers
to become a Z-mask (Z values for solid gets filled in, but not rendered).

Second part of commit is render option "Only render stuff that's in front of
a zbuffer value that was filled in (saves render time)
2008-01-24 15:03:34 +00:00
02145966a8 Fix for strand render + simplification + vector blur. With the number
of strands changing between frames, vector blur couldn't work. Now
speed vectors are interpolated from the surface. This also means
child particles don't have to be computed in the previous and next
frames, so saves time too.
2008-01-24 13:11:15 +00:00
4a913e0010 Bugfix to filter strands with solid correctly. 2008-01-23 20:54:44 +00:00
3e81d4723c Bugfix for strand pass adding with non-box filter, same bug as
existed in ztransp.
2008-01-23 14:30:55 +00:00
52404cd114 Minor render memory usage optimization, removed layer and
radface from VlakRen, saves about 100mb for 10 million faces.
2008-01-23 13:35:51 +00:00
d4ae72c7c9 Bugfix in render instancing for missing leaves. 2008-01-23 11:51:18 +00:00
b2f3c6ffe2 fix for bug where that caused vector blur to crash but could also cause problems elsewhere. 2008-01-22 22:01:49 +00:00
ff714ce654 Bugfix for approximate AO to deal better with degenerate geometry. 2008-01-22 14:01:50 +00:00
82b0ee69e5 Bugfix for another issue with last render instancing commit,
objects could get created multiple times.
2008-01-22 12:10:59 +00:00
ec04c09365 Fix for error in approximate AO in last commit, made it really slow.
Also, duplis are now taking into account, the proper way to exclude
them is to set the material to be not traceable.

Removed an unnecessary pointer from the VlakRen struct to save some
memory, not really that significant, but still, saves 70 mb for 10
million faces.
2008-01-21 23:17:19 +00:00
643e29c736 added function BLI_filepathsize - so you dont have to open the file to get its size.
made render Touch function remove the touched file if the animation is canceled.
2008-01-21 22:10:20 +00:00
9dd1bcfdfb Render instancing can now also handle the same object in multiple,
non-animated dupligroups.
2008-01-21 22:10:14 +00:00
1357f1b09f Vector Blur now has option to be curved!
Especially for fast moving objects (as we have here in Peach) the
art department demanded nice curved vector blur. This formula uses
a quadratic bezier function, which is not giving perfect circles, but
certainly useful results.

Also on todo: get this blur code to do nicer accumulation...
2008-01-21 18:08:57 +00:00
14241f8349 Fixes:
- Particle system distribution wasn't flushed properly for non-edited hair.
- For instances in the renderer, also count their verts and faces in the stats.
- Fix for error in the "surface diffuse" formula for strand shading.
2008-01-21 14:18:24 +00:00
6f4c03a091 opengl stamp wasnt working right, stamp assumed an alpha channel existed. 2008-01-20 23:52:48 +00:00
f417989871 Made it so locked strips inside metastrips are transformed.
Removed FTYPE from render output panel - was some old format that did index colors, and wasn't even used anywhere.

Added 2 options to the render output panel that can be used for a really basic local renderfarm (even artists can use it!),
"NoOverwrite" and "Touch"
When both are enabled, rendering 1 scene between many pc's on a fast network will populate the directory with frames.
Also useful to delete frames that have errors and re-render (without manually re-rendering each frame)
2008-01-20 17:53:58 +00:00
518d3b2c36 Two fixes for yesterday commit, new Mist pass:
- non OSA case didn't work
- ztransp adding was accidentally using an incorrect alpha value

NOTE: allmost all pass types rendered in OSA with a filter (not box!) were
incorrectly added on solid layers. Like diffuse, AO, etc.
2008-01-20 14:50:30 +00:00
231840a99f Bugfix for crash in approximate AO pixel cache. 2008-01-19 19:33:32 +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
afc53a1eba Bugfix: particle settings didn't automatically link in associated
objects or groups.
2008-01-18 14:30:26 +00:00
8cdfe865ec Approximate Ambient Occlusion
=============================

A new approximate ambient occlusion method has been added, next to the
existing one based on raytracing. This method is specifically targetted
at use in animations, since it is inherently noise free, and so will
not flicker across frames.

http://www.blender.org/development/current-projects/changes-since-244/approximate-ambient-occlusion/
http://peach.blender.org/index.php/approximate-ambient-occlusion/

Further improvements are still needed, but it can be tested already. There
are still a number of known issues:

- Bias errors on backfaces.
- For performance, instanced object do not occlude currently.
- Sky textures don't work well, the derivatives for texture evaluation
  are not correct.
- Multiple passes do not work entirely correct (they are not accurate
  to begin with, but could be better).
2008-01-17 19:27:16 +00:00
9af3b8a07e Render control feature: shader-level shadowbuffer bias
Lampbuffers require painful bias tweaking (to prevent aliasing or to
get shadow detail). Sometimes you want this different per object, like
for gras you want less shadow detail, but for the ground you want high
detail. This feature allows to tweak it.

The new "LBias" slider is in shader panel, bottom. Ugly! But, thats for
later...
2008-01-17 19:01:58 +00:00
16a37bcd31 Bugfix for "ghost feathers" trailing one frame behind the character.
The derivedmesh and particle system needed to be evaluated at render
level before creating dupliparticles.
2008-01-17 12:02:15 +00:00
243f4530ef Bugfix for emitter with dupli particles not drawing in group. 2008-01-17 11:07:45 +00:00
4e4e69050c Dupli Bugfixes!
It seems everytime I try to fix something here I break something
else, but anyway, another try at getting this to work properly.

Fixes for:
- Getting dupliverts/faces derivedmesh with orco caused wrong results
  on meshes in linked dupligroups with proxy, because modifier stack
  was revaluated with wrong object matrix, now gets orco another way.
- Fix render instances being hidden when original object was not added
  to the object render list.
- Changed the way object instances find their original objects, now
  works the other way around, original objects look for their instances
  instead.

There's probably issues still with recursive dupligroups..
2008-01-16 23:08:19 +00:00
1faba3d82d Bugfix: strands didn't respect renderlayers. 2008-01-16 14:25:59 +00:00
7bd8871e14 Bugfix for rendering of duplis again, this time with multiple
dupligroups containing the same dupliverts.
2008-01-14 11:07:59 +00:00
2262d0a45a Strand render shadow now only renders lines for shadow instead
of polygons, to avoid shadow flicker between frames.

Added some code that makes it possible to generate APixbuf's
from strands.
2008-01-14 10:00:20 +00:00
826ff978cb Bugfix
[#6861] Black dots when using small lamps on Mirror materials in 2.44 and 2.43.
some values were not initialized properly, for example, the window coordinates for reflections, this caused NAN color values for some pixels, (may also fix plumiferos bad pixel problem from last bconf)
2008-01-13 11:15:23 +00:00
f62477fe27 - Bugfix to make dupli particles for hair respect render amount.
- Allow Random and Even distribution settings to be set after hair
  is made editable, since they also affect children.
2008-01-10 21:44:16 +00:00
cd02005fe4 Adding the colorband Hue, Saturation, Value, Color blending modes
to the Material Texture blending as well.
2008-01-10 11:26:17 +00:00
8aee3ae449 =Wire render fix=
Fix for urgent problem found in wire render.

Hopefully it compiles and everything.
2008-01-10 05:30:55 +00:00
ead7a33247 Misc Render Features
====================

- "From Dupli" option for orco and uv texture coordinates. For dupliverts,
  duplifaces and dupli particles, this uses the orco and uv at the point
  on the parent surface. Can for example be used for texturing feathers
  and leafs. Note that uv only works for duplifaces and particles emitted
  from faces, these are not defined at vertices.

- "Width Fade" option for strand render, to fade out along the width of the
  strand. Committing this so it can be tested, might be changed or removed
  even, if it doesn't give nice results.
2008-01-09 14:40:25 +00:00
5efa093dfc Bugfix for difference between surface and particle orco. 2008-01-07 09:47:52 +00:00
33ffc99664 Fix for use of uninitialized variable in shadow caching, could
sometimes give 1 nan pixel.
2008-01-05 21:56:28 +00:00
c2eeae8e64 - Further fixes for duplivert rendering inside a dupligroup.
- Fix for integer overflow when allocating a lot of particles
  (9 million * 8 keys * sizeof cache key).
2008-01-04 21:12:48 +00:00
2f7dad7df7 - Make dupliverts inside a dupligroup render and draw as instances.
- Possible fix for a dupli render memory leak, but i'm not sure.
2008-01-04 17:48:07 +00:00
56faf73e3c - Bugfix for flickering shadow with strand simplification.
- On non-edited hair, don't generate child particles for
  each step, only at the end.
- Small optimization in the kd-tree.
2008-01-03 22:43:51 +00:00
1c6e1dd5f4 Bugfix for incorrect strand clipping in shadow maps, not sure yet it
actually fixes the problem.
2008-01-02 14:20:15 +00:00
d00d1f1c89 Routine purge of compiler warnings
* Most were uninitialised vars
* Fixed whitespace in a few places 
* The change I made in rendercore.c -> do_bake_shade() was for an uninitialised var, but I hope it does't cause any rendering errors...
2007-12-30 23:27:35 +00:00
3c1ad6a295 * Displacement map baking
This is an extension on the work Brecht already did to implement normal map baking. I've updated the release notes page here with info and pics:

http://www.blender.org/development/current-projects/changes-since-244/render-baking/
2007-12-29 05:17:19 +00:00
6a5ce69a16 Error in previous commit: the texture filter size should not be scaled
at all if you use new 'minimal' option. The new option works much nicer
if it only sets the minimum. (use texture with 'refl' map)

Added option to env map too!
2007-12-28 19:38:47 +00:00
c3ecba1d65 And there's another annoyance I got poked for:
Image texture "Filter size" was not well usable for making the
appearance soft filtered, this because it multiplied the sample 
values, and such values could be extreme small.

Added next to "Filter" buton a new "Min" option, which enforces
a filter size to be a minimum of 'filter' pixels in size.
2007-12-28 18:58:40 +00:00
a85c1c8a65 Render feature: the END OF DIFFUSE BANDING!
http://www.blender.org/development/current-projects/changes-since-244/rendering-features/

Thanks Andy for poking and analysing, and Nathan for feedback!
2007-12-28 13:11:27 +00:00
0f2b2e3c60 Strand Render Simplification
============================

- Strand render now has options to remove child strands as
  the object's faces becomes smaller, in the Simplification
  particle panel.
- "Reference Size" is the approximate size of the object on
  screen, after which simplification starts.
- "Rate" is how fast strands are removed.
- "Transition" is the percentage of strands being faded out as
  they are removed.

- Another "Viewport" option removes strands on faces that are
  outside of the viewport. "Rate" again controls how fast these
  are removed.

- Strand render in Blender Units now has an adjustable minimum
  width. Below this minimum width, strands start fading out
  instead of getting smaller.
2007-12-20 16:35:27 +00:00
Ken Hughes
b8ca87a0ba Rendering
--------
Bugfix #4863: AVI jpg would crash on really small images (less than 16x16).
Change it to pop up an error dialog and abort.
2007-12-19 18:17:56 +00:00
84b58f8653 Particles
=========

- The render and realtime button for the particle system modifier
  and the enabled button for particles now work seperate again,
  made a bad design decision to tie them together. Now with only
  the render button and not realtime enabled it renders.
- Fix for bug #7948: particle mode crash while constraining axis.
- Fix for bug #7945: crash loading effector groups from an old file.
- Fix for bug #7942: crash for reactor particles emitting from particles.
2007-12-18 16:55:09 +00:00
25a434fd25 Threaded Shadowbuffers Creation
===============================

- One shadowbuffer per thread.
- Added more break tests in shadow buffer code.
- Removed R.clipcrop global, solution is not nice yet, but at
  least threadsafe.
- Fixed bug in strand render shadow buffer code.
2007-12-17 21:04:22 +00:00
460dd7a7bb Render Instancing
=================

Big commit, but little user visible changes.

- Dupliverts and duplifaces are now rendered as instances, instead
  of storing all of the geometry for each dupli, now an instance is
  created with a matrix transform refering to the source object.
  This should allow us to render tree leaves more memory efficient.

- Radiosity and to some degree raytracing of such objects is not
  really efficient still. For radiosity this is fundamentally hard
  to solve, but raytracing an octree could be created for each object,
  but the current octree code with it's fixed size doesn't allow this
  efficiently.

- The regression tests survived, but with I expect that some bugs will
  pop up .. hopefully not too many :).

Implementation Notes
====================

- Dupligroups and linked meshes are not rendered as instances yet,
  since they can in fact be different due to various reasons,
  instancing of these types of duplis that are the same can be added
  for them at a later point.

- Each ObjectRen now stores it's own database, instead of there being
  one big databases of faces, verts, .. . Which objects that are actually
  rendered are defined by the list of ObjectRenInstances, which all refer
  to an ObjectRen.

- Homogeneous coordinatess and clipping is now not stored in vertices
  anymore, but instead computed on the fly. This couldn't work for
  instances. That does mean some extra computation has to be done, but
  memory lookups can be slow too, and this saves some memory. Overall
  I didn't find a significant speed impact.

- OSA rendering for solid and ztransp now is different. Instead of e.g.
  going 8 times over the databases times and rendering the z-buffer, it
  now goes over the database once and renders each polygon 8 times. That
  was necessary to keep instances efficient, and can also give some
  performance improvement without instances.

- There was already instancing support in the yafray export code, now it
  uses Blender's render instances for export.

- UV and color layer storage in the render was a bit messy before, now
  should be easier to understand.

- convertblender.c was reorganized somewhat. Regular render, speedvector
  and baking now use a single function to create the database, previously
  there was code duplicated for it.

- Some of these changes were done with future multithreading of scene
  and shadow buffer creation in mind, though especially for scene creation
  much work remains to be done to make it threadsafe, since it also involves
  a lot of code from blenkernel, and there is an ugly conflict with the way
  dupli groups work here .. though in the render code itself it's almost there.
2007-12-15 20:41:45 +00:00
60972ad458 Bugfix for SSS crash with nan's. 2007-12-11 14:35:08 +00:00