Commit Graph

3153 Commits

Author SHA1 Message Date
Ton Roosendaal
ebe2958559 Bugfix #4212
Material Nodes: The Texture node didn't do the standard "2d mapping" yet
in case an Image Texture is used. Caused wrong mapping for example for UV
coordinate inputs.
2006-05-23 14:15:07 +00:00
Ton Roosendaal
f13d63ca48 Brought back the Scene strip in Sequencer. Even does a full composite with
only images input in compositor. Currently still renders in the scene's
own resolution. It also doesn't show scanline/tile updates yet while
rendering.
2006-05-21 20:59:54 +00:00
Ton Roosendaal
425dc54834 Bugfix #4036
Shadowbuffer "soft" option got totally messed up by a commit done 3 months
ago. You could still get soft shadow, but the values to be used had to be
scaled tenfold.

Too bad this now will mean our movie DVD will not render with official
cvs or release... I'll think over some patch to scale down 'soft' values
in certain conditions.
2006-05-14 10:13:58 +00:00
Ton Roosendaal
5947fae18a Fix #4087
Flipped layer render order for halo and ztransp. This because the ztransp
layer changes z values now (for vblur).

This means the default order is: solid + lamphalo + halo + ztra. Different
combinations can be achieved with composting nodes.
2006-05-14 09:02:50 +00:00
Ton Roosendaal
6cc46d087e A stupid x/y mixup gave error "Sorry, exr tile saving only allowed with
equally sized parts" when the tiles were equally sized anyway.
2006-05-12 11:22:45 +00:00
Ton Roosendaal
1c1164a967 Bugfix 4165
Environment map render:

- when an object is in multiple layers, the "don't render layer" option
  didn't work properly. Now it doesn't render an object when it is
  invisible completely

- the new scaling option also worked for cubic envmap, should not.
2006-05-11 10:27:12 +00:00
Ton Roosendaal
420b6ba5e4 Patch #3675 by Ed Halley
Finally after 5 months! :)

Patch was already approved, but needed testing on existing files & time...

Description is here:
http://mediawiki.blender.org/index.php/BlenderDev/Transmissivity

In short: patch adds filtering based on thickness of material, and support
for internal reflection (resulting in better looking glass).

Thanks!
(Only note; appearance of glass render now differs... is acceptable, but for
the factor to control transmissivity a scaling factor could be added in UI,
the length of a ray is a relative thing...)
2006-04-17 15:01:23 +00:00
Ton Roosendaal
4043934d2c Brought back the option "remove all used texture images". It was
committed to be default, but should react to the button in scene panels.
2006-04-10 18:27:51 +00:00
Ton Roosendaal
cbb48709eb Bugfix #3906
Restored animated background picture, using a bad call actually, but thats
clearly noted in comments in code. Is remainder work for cleaning up the
whole render api. :)
2006-04-09 18:22:05 +00:00
Ton Roosendaal
de3a622095 Bugfix #3862
Wire render normals were exactly opposite to the normals for solid faces.
This caused displacement to work inverse too. Flipped them.
(Note; for shading normals are corrected to point towards viewer)
2006-04-09 17:14:55 +00:00
Ton Roosendaal
7766fb4ee5 Bugfix #3939
"Full OSA" render used wrong subsample pattern for accumulating passrender
info. Was only noticable for the 'normal' pass, for example on raytraced
images. Image looked as if it had a wireframe render.
2006-04-08 17:36:27 +00:00
Ton Roosendaal
3b064684b0 Bugfix #3948
Raymirror didn't use proper texture-space 'osa vectors' for sky texture,
causing extremely blurred reflections of sky.
Error was actually a mixup of arguments for sky render...
2006-04-08 16:46:00 +00:00
Ton Roosendaal
0ee101f9ad Bugfix #4066
Particle strands with a width set (like 10 pixels), and with extreme
bending of strands (like a very course subdivision), could create non-flat
quads. For speed reasons, the quad-to-triangle splitting was turned off
for hair, but in this case that should be done nevertheless.

Solves another Dandruff issue for furry bunnies!
2006-04-08 13:50:15 +00:00
Ton Roosendaal
703bbdfe11 Bugfix #4079
Rendering with 'Wire' material, and with Autosmooth set, made wire faces
get a zero'ed normal. Added exception handling code fir wire.
2006-04-08 10:02:20 +00:00
Ton Roosendaal
5f12ccd0f1 Bug fix #3900, washed out AO colors
Darn typo in AO code... it only multiplied the red compononent for AO. :)
2006-04-01 15:35:25 +00:00
Ton Roosendaal
a82910b1b9 Previewrender fix: when moving the mouse still while previews should render
the escape happened without resetting a variable correctly, resulting in
black preview.

This can still be coded better...
2006-04-01 09:36:18 +00:00
Nils Thuerey
0a63b3c0ca Several minor fixes:
- Added part of Austin's msvc8 fixes (vector::erase function
  was "misused"), hopefully compiles better now.
- Ctrl-b now also bakes a selected fluidsim domain
  similar to the softbodies.
- Added surface smoothing option for domains: default is
  1, higher values result in a smoother surface (and probably
  slightly higher comupation times), while 0 means the surface
  is not modified at all.
- Added BLENDER_ELBEEMBOBJABORT environment variable in readBobj,
  if >0 quits blender when a not yet existing fluidsim
  frame should be loaded. Useful for rendering simulations
  as far as possible from the command line.
- Surface normals pointer is now set to NULL in readfile.c
- Fixed win32 error string handling, now uses a function
  to return the string from the solver.
- Fixed fluidsim particle halo scaling problem.
- Solver update
2006-03-29 07:35:54 +00:00
Kent Mein
97a4e4f88d a bunch of small warnings fixes:
newline missing at end of file fixes:
TypedConstraint.h WheelInfo.h RaycastVehicle.h VehicleRaycaster.h
CcdPhysicsEnvironment.cpp

radiance_hdr.c fixed the following warning by changing type of local variable:
radiance_hdr.c:357: warning: pointer targets in passing argument 3 of
‘fwritecol rs’ differ in signedness

edgeRender.c,edgeRender.h same thing changed type of local vars to get rid
of warnings about signedness

RAS_OpenGLRasterizer.cpp removed unused variable unit line 1295

Kent
2006-03-24 16:40:32 +00:00
Ton Roosendaal
8383c44a85 Silly bug in using Compositor... the code that checked if a 3d rendering
was required (compositor can also be used with only image input) told
the pipeline not to render when no composite nodes were available at all,
and with button 'Use Nodes' on.
2006-03-21 11:29:03 +00:00
Ton Roosendaal
ee5d54c0fa Threshold for non-flat quad detection was too wide still. Causing errors
of quads filling in in octrees...
2006-03-19 20:14:16 +00:00
Ton Roosendaal
cf0408a4f6 More environment map stuff:
- added a zoom factor for Planar Environment Map, allowing to zoom in or
  out on the reflected object. The zoom is corrected when rendering, so it
  just gives control over the resolution.
- Planar maps don't cycle anymore, but only render the front plane, using
  standard image texture extend mode.
- threaded rendering is back in envmap render
2006-03-19 17:50:53 +00:00
Ton Roosendaal
54004b8dcc Bugfix in environment mapping: Ztransp and Halo didn't show up. Bug is
there since the Render refactor of early january.
2006-03-19 15:16:02 +00:00
Ton Roosendaal
4bbc9df60d Added option to only render a single side of an Environment map cube,
allowing to use it for planar mirrors. Enable it with the new "Plane"
option in the Environment Map Panel.

Current default is to render the cube side that points to the positive
Z axis direction. To make it work, it uses the same image for all
other cube sides, so it will 'wrap around'.

Also made maximum resolution for environment map to be 4096x4096 now.
2006-03-19 14:26:56 +00:00
Ton Roosendaal
e2660f614d Dang... on background rendering (renderfarm) the user preset for temp dir
isn't set. Hardcoded it to /tmp/ now. Have put on list this requires a
better solution (same issue open for yafray afaik)
2006-03-15 20:41:08 +00:00
Ton Roosendaal
6bc3f0f85e Silly copy/paste error enabled the 'save render to file' option always...
now the button works as meant to be.

Still working on the feature though... I noticed exr files dont read
back when only part was saved (on user break). Working...
2006-03-15 10:18:33 +00:00
Ton Roosendaal
ea9866a75f Memory saving for large renders:
New option "Save Buffers", in first Output panel of renderbuttons, will not
allocate all render buffers, but instead save the rendered tiles to exr.
For each scene rendered, a single exr file then is created.
After rendering, the files get read, and only then the memory allocation is
done.

The exr files are saved in the temp dir (from user settings), and have
names derived from the filename+scene name. That way these buffers remain
relatively unique, and can be re-used later too.

Saving all render-layers and passes in a single file (as F3 command) will
be done later. Also reading back the current muli-layer exr files is not
supported yet (will read black). The purpose is that these files then can
be used as input for the Compositor.

One fun thing I added; after rendering once with this option, close
Blender, and restart it. If you have a Composite set up press 'R' on an
active RenderResult node. This will refresh the node(s) and load the exr,
so you can composite again without a re-render.
2006-03-14 21:29:42 +00:00
Ton Roosendaal
fe3506f6d4 WIP commit on getting the 'render result layers' saved in a single
file. Previous fix accidentally committed parts of that... :)

Note: it is currently disabled still... will commit the real version
soon.
2006-03-14 17:48:40 +00:00
Ton Roosendaal
e3fb99ad70 Urgh... the commit to free texture images always also did it for preview... 2006-03-14 17:44:19 +00:00
Ton Roosendaal
705beae517 Made 'free texture images' default for a while... gives too many errors
for stressed artists who forget it. Will rewind later. :)
2006-03-14 13:26:33 +00:00
Ton Roosendaal
ba12d909c9 When faces are extremely small (like 0.01 size of pixel), the UV calculus
for faces can give inaccuracies resulting in UV values in the hundreds
range. The UV values now are being clipped.

This should fix weird 'shooting lines' for vectorblur on hair renders.
2006-03-14 10:56:46 +00:00
Ton Roosendaal
4a673d1d9b Autosmooth fix: if original Mesh has same amount of faces and vertices
as the one resulting from Modifiers, it uses that data to calculate
autosmooth for. This prevents weird stuff on rendering softbody for
example.
2006-03-13 18:16:23 +00:00
Ton Roosendaal
34a5739a8a Two fixes in renderpipe...
- Renderwin still used a thread-unsafe malloc, in the header text print

- Setting clipping flags in vertices for parts required a mutex lock after
  all... I thought it would go fine, but noticed on renders with small
  amounts of faces that sometimes faces disappear from a render.
  (was doing movie credits, so all faces are visible! Otherwise it would
  have hardly been noticable...)
2006-03-13 11:01:17 +00:00
Ton Roosendaal
afc3d1ade3 Sequencer now outputs float buffers to render too, when available. 2006-03-12 19:00:48 +00:00
Ton Roosendaal
8a8c70c63a A couple of render improvements;
- Bug fix: the upper tile in a collumn for Panorama render didn't put the
  mainthread to sleep properly. Now panorama renders 25% faster if you had
  set Y-Parts to 4.

- Enabling Compositing in Scene for first time now adds a "Composite" node
  too, so render output gets applied.
- An attempt to render with "Do Composite" without "Composite" node will
  throw an error and stops rendering. In background mode it will just not
  render at all, and print errors.
- Errors that prevent rendering now give a popup menu again.
- Having MBlur or Fields option on will now normally render, but with an
  error print in console (not done yet...)
2006-03-12 11:51:56 +00:00
Ton Roosendaal
4e4cd9407d Added security to vectorbuffer code... before it gets used, it checks
for leftover initialized max-speed values, and clears it. Also gives
a giant print then... I want to know when it happens, and howto redo!

(error print = "tsk tsk! PASS_VECTOR_MAX left in buffer...")
2006-03-11 23:10:13 +00:00
Ton Roosendaal
bad09bd2f9 And now the studio is rendering panoramas... finding out that vectorblur
also could use correction for it.
The current perspective projected blur would look in 180 degree view like
this:

http://www.blender.org/bf/p2.jpg
(circle of planes rotating around camera)

After some fight with my rusty highschool gonio I got it fixed; nice
cylindrical projected speedvectors:

http://www.blender.org/bf/p1.jpg
2006-03-11 21:46:19 +00:00
Ton Roosendaal
85ac48c782 With the commit last week to have curve bevels nice circular (when no
front/back is selected), the UV coordinates for curves should also be
corrected.
This commit re-uses the same code as for Nurbs, to make sure UV coordinates
wrap around nicely.

BUT! I've noticed that Daniel's commit of august in this code actually
broke this UV correction... in his craze to cleanup old code, he missed
the actual functionality. Meaning that in 2.40 and 2.41, "UV orco" texture
coordinates wrap around ugly in Nurbs Surfaces, something that was fixed
in NaN days.

Got no time for tracker now... but I'm sure it's in there! :)
2006-03-11 12:34:50 +00:00
Ton Roosendaal
7c23e08270 Vectorblur fix:
To be able to make good masks, it is important to separate the non moving
pixels from the moving ones. With fixes I did 2 weeks ago, a floating
point inaccuracy causes speed vectors to be not always zero perfectly...
and the masks to get badly shaped.

It was clearly visible on moving objects over a non-moving background.
Current commit includes minimal threshold to force speed to zero. Images
are nice and smooth again. :)

Bad:
http://www.blender.org/bf/vb1.jpg
Good again:
http://www.blender.org/bf/vb2.jpg
2006-03-09 22:50:36 +00:00
Ton Roosendaal
dd91048c06 AO did not include own material rgb in calculus, causing too bright AO.
Error caused by WIP on rendering passes.
2006-03-09 12:20:00 +00:00
Ton Roosendaal
d0011f3318 Compositing workflow goodie; each 'render result' node now has a button
option to re-render that specific node. Also works for nodes using other
scenes.
2006-03-07 21:26:37 +00:00
Ton Roosendaal
29f60690e5 Render option "Single Layer" now keeps the already rendered other layers,
and after rendering restores them. Also means this option works for
compositing now.
2006-03-06 13:50:07 +00:00
Ton Roosendaal
a5a26170b2 Also fixed memory print for background render to survive > 2 gig (unsigned) 2006-03-04 22:35:28 +00:00
Ton Roosendaal
3d2aa2815d Accidentally mixed up a true and false statement for detecting if halos
need panorama clipping or regular clip, causing halos to not render
without panorama...
2006-03-02 16:09:30 +00:00
Ton Roosendaal
3ecee5f154 Complex issue in group duplicators... since they can duplicate entire
animation systems, all transforms of all duplicated group members have
to be set first, before drawing or converting for render. This because
then still deformation can be calculated.
2006-02-28 20:43:21 +00:00
Ton Roosendaal
f68b0ddb2a Recoded Panorama rendering.
The old implementation was added quite hackish (talking about 10 yr ago).
You also had to make a small image slice, which was extended Xparts in
size. That also required to adjust the camera angle. Very clumsy.

Now; when enabling the Panorama option, it will automatically apply the
panorama effect on the vertically aligned tiles. You can just enable or
disable the "Pano" button, to get a subtle lens effect like this:

(without pano)
http://www.blender.org/bf/rt.jpg
(with pano)
http://www.blender.org/bf/rt1.jpg

For Panorama render, the minimum slice size has been hardcoded to be 8
pixels. The XParts button goes up to 512 to allow that. In practice,
rendering 64 slices will already give very good images for a wide angle
lens of 90 degrees, the curvature of straight lines then is equal to
a circle of 256 points.
Rendering a full 360 degree panorama you do by creating an extreme wide
angle camera. The theory says camera-lens 5 should do 360 degrees, but
for some reason my tests reveil it's 5.1... there's a rounding error
somewhere, maybe related to the clipping plane start? Will look at that
later. :)

Also note that for each Xpart slice, the entire database needs to be
rotated around camera to correct for panorama, on huge scenes that might
give some overhead.

Threaded render goes fine for Panorama too, but it can only render the
vertically aligned parts in parallel. For the next panorama slice it has
to wait for all threads of the current slice to be ready.

On reading old files, I convert the settings to match as closely as
possible the new situation.
Since I cannot bump up the version #, the code detects for old panorama
by checking for the image size. If image width is smaller than height, it
assumes it's an old file (only if Panoroma option was set).
2006-02-27 12:39:36 +00:00
Nils Thuerey
9a36e9b651 Sorry for the big commit, but I've been fixing many of these
issues in parallel... So this commit contains: an update of
the solver (e.g. moving objects), integration of blender IPOs,
improved rendering (motion blur, smoothed normals) and a first particle
test. In more detail:

Solver update:
- Moving objects using a relatively simple model, and not yet fully optimized - ok
  for box falling into water, water in a moving glass might cause trouble. Simulation
  times are influenced by overall no. of triangles of the mesh, scaling meshes up a lot
  might also cause slowdowns.
- Additional obstacle settings: noslip (as before), free slip (move along wall freely)
  and part slip (mix of both).
- Obstacle settings also added for domain boundaries now, the six walls of the domain are
  obstacles after all as well
- Got rid of templates, should make compiling for e.g. macs more convenient,
  for linux there's not much difference. Finally got rid of parser (and some other code
  parts), the simulation now uses the internal API to transfer data.
- Some unnecessary file were removed, the GUI now needs 3 settings buttons...
  This should still be changed (maybe by adding a new panel for domain objects).

IPOs:
- Animated params: viscosity, time and gravity for domains. In contrast
  to normal time IPO for Blender objects, the fluidsim one scales the time
  step size - so a constant 1 has no effect, values towards 0 slow it down,
  larger ones speed the simulation up (-> longer time steps, more compuations).
  The viscosity IPO is also only a factor for the selected viscosity (again, 1=no effect).
- For objects that are enabled for fluidsim, a new IPO type shows up. Inflow
  objects can use the velocity channels to animate the inflow. Obstacles, in/outflow
  objects can be switched on (Active IPO>0) and off (<0) during the simulation.
- Movement, rotation and scaling of those 3 types is exported from the normal
  Blender channels (Loc,dLoc,etc.).

Particles:
- This is still experimental, so it might be deactivated for a
  release... It should at some point be used to model smaller splashes,
  depending on the the realworld size and the particle generation
  settings particles are generated during simulation (stored in _particles_X.gz
  files).
- These are loaded by enabling the particle field for an arbitrary object,
  which should be given a halo material. For each frame, similar to the mesh
  loading, the particle system them loads the simulated particle positions.
- For rendering, I "abused" the part->rt field - I couldnt find any use
  for it in the code and it seems to work fine. The fluidsim particles
  store their size there.

Rendering:
- The fluidims particles use scaled sizes and alpha values to give a more varied
  appearance. In convertblender.c fluidsim particle systems use the p->rt field
  to scale up the size and down the alpha of "smaller particles". Setting the
  influence fields in the fluidims settings to 0 gives equally sized particles
  with same alpha everywhere. Higher values cause larger differences.
- Smoothed normals: for unmodified fluid meshes (e.g. no subdivision) the normals
  computed by the solver are used. This is basically done by switching off the
  normal recalculation in convertblender.c (the function calc_fluidsimnormals
  handles other mesh inits instead of calc_vertexnormals).
  This could also be used to e.g. modify mesh normals in a modifier...
- Another change is that fluidsim meshes load the velocities computed
  during the simulation for image based motion blur. This is inited in
  load_fluidsimspeedvectors for the vector pass (they're loaded during the
  normal load in DerivedMesh readBobjgz). Generation and loading can be switched
  off in the settings. Vector pass currently loads the fluidism meshes 3 times,
  so this should still be optimized.

Examples:
- smoothed normals versus normals from subdividing once:
  http://www10.informatik.uni-erlangen.de/~sinithue/temp/v060227_1smoothnorms.png
  http://www10.informatik.uni-erlangen.de/~sinithue/temp/v060227_2subdivnorms.png
- fluidsim particles, size/alpha influence 0:
  http://www10.informatik.uni-erlangen.de/~sinithue/temp/v060227_3particlesnorm.png
  size influence 1:
  http://www10.informatik.uni-erlangen.de/~sinithue/temp/v060227_4particlessize.png
  size & alpha influence 1:
  http://www10.informatik.uni-erlangen.de/~sinithue/temp/v060227_5particlesalpha.png
- the standard drop with motion blur and particles:
  http://www10.informatik.uni-erlangen.de/~sinithue/temp/elbeemupdate_t2new.mpg
  (here's how it looks without
  http://www10.informatik.uni-erlangen.de/~sinithue/temp/elbeemupdate_t1old.mpg)
- another inflow animation (moving, switched on/off) with a moving obstacle
  (and strong mblur :)
  http://www10.informatik.uni-erlangen.de/~sinithue/temp/elbeemupdate_t3ipos.mpg

Things still to fix:
- rotating & scaling domains causes wrong speed vectors
- get rid of SDL code for threading, use pthreads as well?
- update wiki documentation
- cool effects for rendering would be photon maps for caustics,
  and motion blur for particles :)
2006-02-27 11:45:42 +00:00
Ton Roosendaal
02a931ac4f Replacing SDL threads with pthread.
For some reason I thought SDL thread handling would be much simpler... but
the migration to posix pthread went very smooth and painless. Less code
even, and I even notice a slight performance increase!

All threading code is still wrapped in blenlib/intern/threads.c
Only real change was making the callback functions to return void pointer,
instead of an int.

The mutex handling is also different... there's no test anymore if a
mutex was initialized, which is a bit confusing. But it appears to run
all fine still. :)

Nathan Letwory has been signalled already to provide the Windows pthread
library and make/scons linking. For MSVC we might need help from someone
else later though.
2006-02-25 11:56:08 +00:00
Ton Roosendaal
d5096f48b1 forgot note for last commit;
There's one 'volatile' warning in pipeline.c still, should be harmless...
it is bad code to be rewritten soon.
2006-02-24 10:21:40 +00:00
Ton Roosendaal
7930c40051 Made the most critical variables in render pipeline "volatile", especially
the ones that get changed within threads, to communicate with the main
thread.

(Part of the long quest to get threaded render safe, especially in Linux)
2006-02-24 10:20:31 +00:00
Nathan Letwory
0ec3791d2d ==SCons==
* Add check for WITH_BF_OPENEXR to ensure WITH_OPENEXR is specified when
  needed. Now workyworky again
2006-02-23 21:37:29 +00:00