Commit Graph

1455 Commits

Author SHA1 Message Date
b5457e8e70 RNA
* Wrapped RenderResult, RenderLayer, RenderPass.
* Update RNA_access.h with new structs.
2009-07-21 14:11:51 +00:00
0b49dc77de 2.5: Bump Mapping
Patch by Alfredo de Greef. Considerably improves the quality of bump
mapping, and texture filtering for displacement and warp too. Mainly
this is achieved by getting the texture derivatives just right in
various cases, many thanks to Alfredo for figuring this one out, works
great.


This is enabled by default now, but disabled still for existing
textures to preserve backwards compatibility. Can be enabled with
the "New Bump" option in the material texture slot in the outliner.

Also, I made the range for the normal factor a bit smaller since this
gives stronger effects, but note that you can still type in larger
values than the slider allows.
2009-07-21 13:46:49 +00:00
e3c6ae9b89 2.5: Texture Filtering
Patch by Alfredo de Greef with high quality image texture filters.
This adds 3 new filters:

* SAT: Summed Area Tables. This is like mipmaps, but using somewhat
  more memory avoids some artifacts.
* EWA: Ellipitical Weighted Average, anisotropic filter.
* FELINE: Fast elliptical lines for anisotropic texture mapping.

The one change I made to this was to try to fix an alpha/premul
problem, hopefully I didn't break anything, it looks compatible
with the existing filter now for me.
2009-07-21 13:20:35 +00:00
2830f25ff3 Another try with building better trees (this should never make worst trees)
Expected number of BB tests should reduce a bit (depending on the scene)
2009-07-17 19:09:42 +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
146b54d5e8 *increased stack size (later this should be prepared for dealing with stack size in runtime)
*put cost model back to normal
2009-07-15 17:44:25 +00:00
ef1fcd8ad1 *Added support to "BB hints" (which works like a BB version of LCTS - longest common transversing subtree)
It creates a tree cut after knowing that a given point will pass on a BB.
This tree cut is used to accelarate the rays casted from a given BB, eliminating unnecessary BB tests from root till the tree cut.
2009-07-15 17:38:00 +00:00
e3f7cad32d *fix (was losing childs) 2009-07-14 23:26:00 +00:00
7afffd2950 Just another experimental stuff to optimize the expected number of BB test on bvh trees
*tree pushdowns after the pushsups :P (its still not local optimum)
2009-07-14 23:08:55 +00:00
41fb3626f3 2.5: Render
* UI layout for scene buttons has quite some changes, I tried to
  better organize things according to the pipeline, and also showing
  important properties by default, and collapsing less important ones.

Some changes compared to 2.4x:
* Panorama is now a Camera property.
* Sequence and Compositing are now enabled by default, but will only
  do something when there is a node tree using nodes, or a strip in the
  sequence editor.
* Enabling Full Sample now automatically enables Save Buffers too.
* Stamp option to include info in file is removed, it now simply always
  does this if one of the stamp infos is enabled.
* Xvid, H.264 and Ogg Theora are now directly in the file format menu,
  but still using FFMPEG. Unfortunately Ogg is broken at the moment
  (also in 2.4x), so that's disabled. And Xvid crashes on 64bit linux,
  maybe solvable by upgrading extern/xvidcore/, using ubuntu libs makes
  it work.
* Organized file format menu by image/movie types.

Added:
* Render layers RNA wrapped, operatorized, layouted.
* FFMPEG format/codec options are now working.

Defaults changed:
* Compositing & Sequencer enabled.
* Tiles set to 8x8.
* Time/Date/Frame/Scene/Camera/Filename enabled for stamp.
2009-07-13 19:09:13 +00:00
26ef6da24b 2.5
* Objects now support up to 32767 material slots. It's easy to
  increase this further, but I prefer not to increase the memory
  usage of mesh faces, it seems unlikely that someone would
  create 32767 distinct materials?
* Forward compatibility: the only thing you can potentially lose
  reading a 2.5 file in 2.4 is object linking (instead of default
  data), though usually that will go fine too. Reading files with
  > 32 material slots in 2.4 can start giving issues.

* The ob->colbits variable is deprecated by the array ob->matbits
  but I didn't remove the ob->colbits updates in very few places
  it is set.
* I hope I changed all the relevant things, various places just
  hardcoded the number 16 instead of using the MAXMAT define.

* Join Objects operator back. This is using the version from the
  animsys2 branch coded by Joshua, which means it now supports
  joining of shape keys.

* Fix for crash reading file saved during render.
2009-07-13 00:40:20 +00:00
6fb0181b50 Keyed physics refresh:
- Keyed targets in one list instead of "chaining", this opens up many more possibilities than before and is much less obscure.
- Better keyed timing possibilities (time & duration in frames).
- Looping over keyed targets list.

Other changes:
- New child setting "length" with threshold (great for guard & underfur with a single particle system)
- Modularization of path interpolation code.
- Cleared "animateable" flags from many particle settings that shouldn't be animateable.

Fixes:
- Keyed particles weren't copied properly (ancient bug).
- Hair rotations depended on global z-axis for root rotation so downward facing strands could flip rotation randomly. Now initial hair rotation is derived from face dependent hair matrix. (This caused for example ugly flipping of child strands on some cases).
- Children from faces weren't calculated straight after activating them.
- Multiple disk cache fixes:
	* Disk cache didn't work correctly with frame steps.
	* Conversion from memory cache to disk cache didn't work with cloth.
	* Disk cache crashed on some frames trying to close an already closed cache file.
	* Trails didn't work with disk cached particles.
- Child rough effects were effected by emitter object loc/rot making them next to useless with animation, why didn't anybody tell me this!!
- Lots of random code cleanup.
2009-07-12 23:38:47 +00:00
a6b328b825 *Moved rtbuild to bf_render_raytrace
*Added vbvh - Just a experimental tree type :)
Variable Way BVH - there is no hardcoded number of childs per each Tree Node
 - idea is to optimize a tree to reduced the expected number of BB tests even after applying SAH (for that an hardcoded n-way is not enough)
 - for now childs are stored on a linked list
2009-07-12 18:04:10 +00:00
e264087fad I had applied a patch twice.. code was duplicated 2009-07-11 22:29:53 +00:00
d6aefa6abd Added module bf_render_raytrace (source/blender/render/intern/raytrace)
to be able to use C++ at raytrace code
	C++ used in here is basicly C with templates and function overloads,
	to make it easier to reuse code between structures.

For now BVH was converted in C++ and moved to this module
2009-07-11 22:13:01 +00:00
e56795b4fa svn merge -r 21372:21508 https://svn.blender.org/svnroot/bf-blender/branches/blender2.5/blender 2009-07-10 21:49:40 +00:00
9a23287fd8 SUN and HEMI lights back as trunk (i think) 2009-07-10 17:41:49 +00:00
81c3561513 *rtbuild now stores BB
*fix in ray/bb hit tests inside instances
2009-07-10 16:42:51 +00:00
c43fe4cca9 Should improve mirror rays (copy past error: was losing dive first heuristic sometimes) 2009-07-10 15:43:59 +00:00
b60bfd613e Cost of a BVH is calculated using SA(child)/SA(parent)
Although tests didnt showed this to be clearly superior to: cost(bvh) = log(size)
2009-07-10 15:33:35 +00:00
5e659c0b08 2.5
Monthly cleaning round to make it compile warning free.
Mostly it was const stuff (strings, Context), but also
a couple useful fixes, like wrong use of temp pointers.

Only Mathutils callback struct I left alone... design issue.
2009-07-09 15:40:04 +00:00
2e4b9f3be4 *set cost of transversing a BVH as log(size) 2009-07-08 21:56:24 +00:00
85f6c108ac *Added support for variable cost per RayObject
Suposedly usefull for creating trees of objects (where objects have very diferent size-NumFaces and shape-BB)
Altought the implemented costs maybe not be very correct (for now), as i didnt cared about following a specific "corrected" model
2009-07-08 20:04:40 +00:00
8105454cba Enabled #ifdefs to test LAST_HIT, LAST_HINT
Disable last_hint as it only slow downs
2009-07-08 19:39:37 +00:00
f13d11ab71 Hint support (only for first hiearchic level and shadow rays, lets see if this is useful)
That means each shadow ray tests:
	1st: last hit face
	2nd: last hit object
	3rd: tree of all objects
2009-07-08 15:34:41 +00:00
f90a0b8383 Added local stack during bvh transversal 2009-07-08 10:40:26 +00:00
5b75ea38ff made rtbuild object_heuristic_spliter faster
I think its something like:
	old was:  4*nlogn + 3*(n*6)
	new is:  (2*nlogn + 3*(n*6)) * f, with f<1

Still missing changing the sorting function to an introsort instead of qsort
Other options like bucketing sort may be worth trying (for very large trees)
2009-07-07 19:07:53 +00:00
08fa786251 *added Object SAH support to rtbuild:
only for 2childs splits
	with "worse case heuristic" means each child is considered to have a cost linear on the number of leafs
	no termination criteria

number of BB test/hits expected to "reduced" by some factor
tree building is also expected to be slower as previous split was "object mean", which is quite fast to evaluate
2009-07-07 15:42:08 +00:00
c65a3e3166 *Added BLI_memarena on bvh
*Median split support on rtbuild
2009-07-06 19:45:00 +00:00
aa12d2153f *fix (forgot to multiply by BB size) 2009-07-06 15:35:46 +00:00
e0e66f6b74 *"Fixed" rayobject_bvh memory organization of BB's
until now rayobject_bvh should be at least as fast as BLIBVH, this seemed to be the missing piece
2009-07-06 14:36:26 +00:00
ba1f3323bf *Added output of BB/primitves test/hits
*"Added" SCE_PASS_RAYHITS to visually see each pixel primitive and BB tests (not-completed for UI)
*Added runtime exchange of tree structure
*Removed FLOAT_EPSILON from BLI_bvhkdop BB's
2009-07-06 13:27:40 +00:00
6e1a81bc7a svn merge -r 21301:21372 https://svn.blender.org/svnroot/bf-blender/branches/blender2.5/blender 2009-07-05 15:20:19 +00:00
621b37bed6 *Added BIH 2009-07-05 00:38:53 +00:00
7055702530 Rendering animations with particle trails cached. 2009-07-04 12:09:21 +00:00
66918b3add A bunch of fun stuff now possible because of new pointcache code:
* Baked normal particles can now use the "Path" visualization.
* Path "max length" & "abs length" are now history:
	- New option to set path start & end times + random variation to length.
	- Much more flexible (and calculated better) than previous options.
	- This works with parents, children, hair & normal particles unlike old length option.
	- Only known issue for now is that children from faces don't get calculated correctly when using path start time.
* New option "trails" for "halo", "line" and "billboard" visualizations:
	- Draws user controllable number of particle instances along particles path backwards from current position.
	- Works with children too for cool/weird visualizations that weren't possible before.
* Normal particle children's velocities are now approximated better when needed so that "line" visualization trails will look nice.
* New particle instance modifier options:
	- "path"-option works better and has controllable (max)position along path (with random variation possible).
	- "keep shape"-option for hair, keyed, or baked particles allows to place the instances to a single point (with random variation possible) along particle path.
	- "axis" option to make rotation handling better (still not perfect, but will have to do for now).

Some fixes & cleanup done along the way:
* Random path length didn't work for non-child particles.
* Cached & unborn particles weren't reset to emit locations.
* Particle numbers weren't drawn in the correct place.
* Setting proper render & draw visualizations was lost somewhere when initializing new particle settings.
* Changing child mode wasn't working correctly.
* Some cleanup & modularization of particle child effector code and particle drawing & rendering code.
* Object & group visualizations didn't work.
* Child simplification didn't work.
2009-07-04 03:50:12 +00:00
3d06a104a4 rayobject_octree fixed 2009-07-03 18:16:59 +00:00
4a72557e6b Fixed memory aligns for 64bits 2009-07-03 17:10:54 +00:00
7da0d1a71e * Fixed a crazy memory leak in voxel data image sequence data source 2009-07-03 11:03:09 +00:00
44ef6c1eac *little fix 2009-07-03 02:56:54 +00:00
8394653ebd *No need of a BB if the underlying structure already has a BB 2009-07-03 02:26:40 +00:00
4b81d44282 *fixed crash 2009-07-02 22:12:26 +00:00
686a426cf0 *fixed rtbuild (there was a sorting bug introduced while adapting code from BLI_bvh)
This bvh should be at least as fast as BLI_kdopbvh now
2009-07-02 21:57:50 +00:00
5c207a61f3 *RTBuilder now supports splitting leafs in N leafs
something is wrong on rayobject_bvh as it looks slower than BLI_bvh and code is based on it
2009-07-02 15:45:15 +00:00
b14298f959 svn merge -r 21041:21301 https://svn.blender.org/svnroot/bf-blender/branches/blender2.5/blender 2009-07-02 11:28:42 +00:00
2acac0ff99 Reverted incorrect merge (missing files)
svn up -r 21247
svn merge -r 21247:21246 . (<= revert incorrect: merge -r 21041:21243)
svn up
2009-07-02 02:59:43 +00:00
1b557a61a5 fixed ray mirror/trans shadow on rayobject_bvh 2009-07-01 12:36:05 +00:00
91226e6807 *Added rayobject_bvh
A bvh structure to use on the raytracer
2009-07-01 11:27:43 +00:00
1deba75110 *Added initial code of rayobject_rtbuild
An helper class to build trees
2009-06-30 22:07:42 +00:00
021e0cc53f *reserved RayObject align offset 0 for private usage inside each structure
point is that other structures like trees can then distiguish between other nodes or rayobject primitives
withouth needing any other variable.
	(Note yet used but will reduce memory by a nice factor (linear to the number of primitives))
2009-06-30 14:05:33 +00:00