Commit Graph

833 Commits

Author SHA1 Message Date
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
51322964f4 Particles
=========

- Normalize strand coordinates over the length of the strand, not
  cut off when with e.g. length texture control.
- Weight paint and particle mode x-mirror now works with deformation
  and shape keys active.
- X-ray is now disabled in particle mode, messed up depth tests.
2007-12-06 17:43:47 +00:00
e756b1cc7d - fix for [#7327] Problem/issue with .PLY export,
editmode was not exited, and vertex normals would not write at all! (probably own error)

- Edited tooltip for texture DVar (was some user confusion in the studio as to its purpose)

- Set render border is disabled when it has no area - so drawing a box outside the camera disables .
2007-12-05 20:21:25 +00:00
29d87d64ca Particles
=========

- Texture orco coordinates for particles are now actual orcos instead
  of just the vertex positions, which means they are the same under
  deformations and the same as the ones on the mesh.
- Particle distribution now uses these orcos to get consistent
  distributions independent of deformation.
- This required changing the way orco's are computed for meshes. Now
  instead of generating an orco derivedmesh separately, the derivedmesh
  is generated alongside the regular one and stored in an orco custom
  data layer.
2007-12-05 12:40:54 +00:00
25ea528a29 Bugfix: de-premul for image texture didn't happen for non-osa case. 2007-12-04 19:06:00 +00:00
d3bd96ba6c Strand render bugfixes:
- Fix compile error.
- Some changes to bucketing.
- Tweak acceleration button increase size.
2007-12-04 17:53:03 +00:00
09b9a1e3f7 Addition to previous strand render bugfix. 2007-12-04 17:19:30 +00:00
c50dfa4379 Strand render bugfixes:
- Accidentally made minimum blender unit strand size bigger again.
- Make layer option for lamps work.
2007-12-04 16:55:01 +00:00
43c7cb994e SSS now uses oversampling for textures in the preprocessing pass,
to fix noisy renders, to solve patch #7865.
2007-12-04 15:11:33 +00:00