Commit Graph

5167 Commits

Author SHA1 Message Date
Campbell Barton
160239ea73 Fixed a few problems with wave drawing-
Optimized so only samples inside the screens bounds are drawn.
Wave display detail is based on zoom - so you can view realy large wave files as well as indervidual samples.
Changed logic so an approximation of the wave is displayed rather then just the symetrical amplitude of the sound.
Triangles at start and end were annoying and obscured the start of the sound. made them alpha 0.7 for sound clips only.
a whole CD of music should display well and zoom smoothly now.
2006-01-29 14:58:41 +00:00
Ton Roosendaal
9f5a58aeff Compositing: the "RGB Curves" node now has an optional 'factor' input as
well. It currently only is active when you input a mask (alpha, z).
Nice to do grading on certain parts of image only :)
2006-01-29 14:37:17 +00:00
Ton Roosendaal
d334ac0963 Fix: theme color version patching should start with 2.41 too. 2006-01-29 13:12:42 +00:00
Ton Roosendaal
2d12365f7c Previewrender (buttons) now supports Lamp, Texture and Sky previews
again. One exception I didn't solve yet... for the Stucci texture.

In a next commit I will add the preview.blend, so people can play with it!

The rules for preview.blend are pretty primitive still... might become
a bit more advanced later. Here's what it uses now:

- If Object has name starting with 'p' it will get the to-be-previewed
  Material or Lamp assigned
- If Object has name starting with 't' its Material gets the texture
  assigned for Texture previews

The layer codes for current preview options are in DNA_material_types.h;

#define MA_SPHERE		0
#define MA_CUBE			1
#define MA_FLAT			2
#define MA_MONKEY		3
#define MA_SPHERE_A		4
#define MA_TEXTURE		5
#define MA_LAMP			6
#define MA_SKY			7

(SPHERE_A is sphere with alpha for icons)
2006-01-29 13:10:20 +00:00
Ton Roosendaal
abe7e7bc72 Bugfix; version patching for new armature layers and Node editor themes
had to check 2.41 files too. Orange branch was still in 2.40...
2006-01-29 12:53:57 +00:00
Ton Roosendaal
2f8708da02 Three-in-one commit:
- Compositor now is threaded
Enable it with the Scene buttons "Threads". This will handle over nodes to
individual threads to be calculated. However, if nodes depend on others
they have to wait. The current system only threads per entire node, not for
calculating results in parts.

I've reshuffled the node execution code to evaluate 'changed' events, and
prepare the entire tree to become simply parsed for open jobs with a call
to   node = getExecutableNode()
By default, even without 'thread' option active, all node execution is
done within a separate thread.

Also fixed issues in yesterdays commit for 'event based' calculations, it
didn't do animated images, or execute (on rendering) the correct nodes
when you don't have Render-Result nodes included.

- Added generic Thread support in blenlib/ module
The renderer and the node system now both use same code for controlling the
threads. This has been moved to a new C file in blenlib/intern/threads.c.
Check this c file for an extensive doc and example how to use it.

The current implementation for Compositing allows unlimited amount of
threads. For rendering it is still tied to two threads, although it is
pretty easy to extend to 4 already. People with giant amounts of cpus can
poke me once for tests. :)

- Bugfix in creating group nodes
Group node definitions demand a clear separation of 'internal sockets' and
'external sockets'. The first are sockets being linked internally, the latter
are sockets exposed as sockets for the group itself.
When sockets were linked both internal and external, Blender crashed. It is
solved now by removing the external link(s).
2006-01-29 11:36:33 +00:00
Campbell Barton
9ccdad0d13 Made mesh align to face/verts also align to an edge and a verts normal, existing functionality was not changed.
usefull for rotating about an edge.
2006-01-29 08:36:01 +00:00
Campbell Barton
904e298dc1 Small edit so undo+redraw is only done when removeDoubles actually does somthing.
Would anyone have a problem with me going through and making functions like triangulate, flip normals tri2quad etc all return how many changes made? - then undo+redraw can be done only when needed.
2006-01-29 08:01:04 +00:00
Ton Roosendaal
36e993a06f Two missing declarations in this include file. 2006-01-28 20:23:53 +00:00
Ton Roosendaal
240e25ab65 Cleanup of blender/ module; Makefiles now compile this warning free.
Mostly was unused variables, unused functions, missing prototypes and
missing include files.
2006-01-28 20:17:48 +00:00
Ton Roosendaal
8347dd2560 Put back the -O2 default for compiling with makefiles in OSX.
I disabled it for testing in orange...
2006-01-28 19:48:29 +00:00
Chris Want
1ba1fc0c0f composit, composite, compose ... what's the diff? You sconz0rs need
filename globbing!

Added 'e' to renamed file.
2006-01-28 19:25:43 +00:00
Ton Roosendaal
9ce8944a05 Wow! bugfix in bf-blender again!
Simon C. gave me a nice crash.blend, in zbuffered transparent render.
Was a malloc that should become calloc... :)
2006-01-28 19:05:49 +00:00
Chris Want
0d0255f3f5 The code from the orange branch has now been copied into HEAD.
Here are some notes written by Ton:

There's several areas I still have to work on, so don't immediately
report bugs!

- Preview renders in buttons window only supports materials now (no
lamp, texture or world)
- Yafray code has to be checked, it might not work
- unified render doesn't work, might not come back even
- lens flares dont work yet
- motion blur and field render doesnt work yet
- exr libraries are static linked still, we look at making it dynamic
loadable
- the compositor is fully in development still

I really advise people to check on the orange cvs logs too (in case you
ignored it), this has most of the information in it.

At this moment I still have to code for Orange deadlines, that defines
my priority listing mostly. And since we don't use Windows there, doing
testing and bugfixing for that platform would be of great help!

Best features of this commit to checkout:

- Grouping
- full fixed library linking system
- custom bone drawing
- bone layers
- Material/Shading nodes
- recode of render engine
- preview renders
- Compositing options

When the work pressure is a bit lower, I'll make nice docs for all of
this!

-Ton-
2006-01-28 18:33:28 +00:00
Ton Roosendaal
b71130ca80 Orange: missing sync for game engine in orange, compiles now again! 2006-01-28 17:19:21 +00:00
Ton Roosendaal
4270cc96bc Orange: replaced obsolete IMB_rectop() with IMB_rectcpy() in game engine. 2006-01-28 16:43:00 +00:00
Chris Want
c8b48e70e6 Final merge of HEAD (bf-blender) into the orange branch.
Here are my notes on things to look out for as potential problem
spots:

source/blender/blenkernel/intern/displist.c:
+ is initfastshade(void) supposed to be empty? I had
to make it empty to get the merged tree to compile.

source/blender/python/api2_2x/Armature.c:
+ went with the version that had Armature_getLayers()

source/blender/python/api2_2x/Object.c
+ went with the version of Object_getPose() from bf-blender.
(#ifdef 0-ed the other version)

source/blender/python/api2_2x/Pose.[ch]
+ had problems linking due to no Pose_Init() ... copied these
two files straight from bf-blender.

source/blender/src/drawview.c:
+ view3d_panel_properties() had things shifted a few things shifted
a few pixels, otherwise, things were painless

source/blender/src/splash.jpg.c:
+ went with bf-blender version (orange is dead)

source/gameengine:
+ went with bf-blender version -- does not compile due to IMB_rect* stuff,
Ton should look into this.
2006-01-28 16:35:18 +00:00
Ton Roosendaal
45c7b2c5c2 Orange: made Compositing more interactive. It now has an event based
system tracking changes in nodes, making sure only these nodes and
the ones that depend, are executed.

Further the 'time cursor' now counts down to indicate which node is being
done.

Also: you now can disable the "use nodes" button in the header, edit all
changes, and when you press that button again it nicely executes the
changes.

Still on the todo:
- make compositing threaded
- find a way to nicely exit compositing on input events... so the UI
  keeps being responsive
- idea; a 'percentage' menu in header to enforce calculations on smaller
  images temporally
2006-01-28 15:21:04 +00:00
Ton Roosendaal
80bd3a1e98 Orange: fix for threaded rendering. Discovered that for some reason the
threads didn't seem to free allocated memory... while rendering an long
sequence, the 'virtual memory' size grew with about 20 meg per frame.
This appeared to be not related to using malloc in threads (works
properly), but just because threads were not closed properly.

I assumed that the call to SDL_CreateThread() also closes the thread
when finished... but that seems to be not the case. By using a call to
SDL_WaitThread() after the thread was finished the memory heap is stable
again.

This is something I've seen not documented anywhere... the SDL man
pages are horrible sparse; Take for example the official page:

http://manuals.thexdershome.com/SDL-1.2.5/html/sdlcreatethread.html
2006-01-28 10:30:16 +00:00
Ton Roosendaal
bb2e2b9ec8 Orange: previous commit for render-layers didn't update the case for
3d window preview-render.
2006-01-28 08:27:29 +00:00
no-author
e8afec9f9a This commit was manufactured by cvs2svn to create branch 'orange'. 2006-01-26 22:47:31 +00:00
Ton Roosendaal
4a52c6ac6f Orange; more render & compo stuff!
-> Rendering in RenderLayers

It's important to distinguish a 'render layer' from a 'pass'. The first is
control over the main pipeline itself, to indicate what geometry is being
is rendered. The 'pass' (not in this commit!) is related to internal
shading code, like shadow/spec/AO/normals/etc.

Options for RenderLayers now are:
- Indicate which 3d 'view layers' have to be included (so you can render
  front and back separately)
- "Solid", all solid faces, includes sky at the moment too
- "ZTransp", all transparent faces
- "Halo", the halos
- "Strand", the particle strands (not coded yet...)

Currently only 2 'passes' are exported for render, which is the "Combined"
buffer and the "Z. The latter now works, and can be turned on/off.

Note that all layers are still fully kept in memory now, saving the tiles
and layers to disk (in exr) is also todo.

-> New Blur options

The existing Blur Node (compositor) now has an optional input image. This
has to be a 'value buffer', which can be a Zbuffer, or any mask you can
think of. The input values have to be in the 0-1 range, so another new
node was added too "Map Value".
The value input can also be used to tweak blur size with the (todo)
Time Node.

Temporal screenies:
http://www.blender.org/bf/rt.jpg
http://www.blender.org/bf/rt1.jpg
http://www.blender.org/bf/rt2.jpg

BTW: The compositor is very slow still, it recalulates all nodes on each
change still. Persistant memory and dependency checks is coming!
2006-01-26 22:18:46 +00:00
Matt Ebb
517048eb3d * Put the Add->Group menu in the top info header too. 2006-01-26 21:18:02 +00:00
Matt Ebb
fa54435615 == Interface/Nodes ==
Modification to allow adding a point in a curve button by LMB clicking/dragging directly on the curve, as in GIMP/Photoshop/etc.
2006-01-26 17:35:26 +00:00
Matt Ebb
0ebc907a51 * Never added the hotkeys for rendering and playing back animation to the menus. woops! 2006-01-26 15:09:33 +00:00
Ton Roosendaal
1cde5efa3d Orange:
- Missing free in AVI writing
- time counter for animation render wasn't reset to zero on successive
  renders.
2006-01-25 16:47:20 +00:00
Ton Roosendaal
9da8961513 Orange: new pipeline separated calculus for window matrix from converting
data to renderdata. However, if a camera has a lens-ipo, this has to be
calculated correctly each time.

Actually, render system suffers like Blender itself from a weak time
system... which still is polluted by confusing globals. Should all work
now, but definitely needs attention later.
2006-01-25 15:09:17 +00:00
Ton Roosendaal
7d715c0693 Forgot to pass on current frame number to compositor, when render anims! 2006-01-25 12:25:10 +00:00
Ton Roosendaal
7ce61d0fdf Orange; fresh morning feature:
Image Node now supports animations as well. Press the 'Sequence' Icon in
the node to see the options:

- Frs: the amount of images involved in the sequence
- SFra: start frame, the Blender frame number
- First: the number in the name of the first image in the sequence
- Cycl: make the sequence go cyclic

The images are refreshed on each call to execute the node tree, but not
on advancing frames in Blender... I suspect that might make it to slow now,
will first have to code nice threaded/optimized updates in compositor.
2006-01-25 10:39:29 +00:00
Campbell Barton
39e1043cfe a touch neater and some comments. 2006-01-25 06:28:47 +00:00
Campbell Barton
d35be5c578 Dont draw blocks what are outside the the view. - massive speedup with complex sequence's 2006-01-25 05:14:03 +00:00
Ken Hughes
dc103bceab ==bugfix==
Access to G.vd without an active 3D window from sequences during Alt-A
playback caused segfault; check and return if it's NULL, and print an error
to stderr.  (Someone should check why viewmove() is being called).
2006-01-25 02:18:20 +00:00
Ton Roosendaal
b969857767 Orange fix: jitter mask for OSA was off with half a pixel...
There seems to be a wrong offset for non-osa too, will look into that now.
2006-01-24 23:02:02 +00:00
Campbell Barton
7bb69869e0 Made numbuts use non linear rate of change when dragging.
The further you drag the bigger the number gets (like gimp/photoshop brush size slider)
Works for ranges: float buttons bigger then 11 and int buttons bigger then 129.
2006-01-24 22:07:41 +00:00
Ton Roosendaal
f0dae325c3 Orange: enabled compositing in render pipeline.
- New Node "Composite" is output node that puts composited result back
  in render pipeline.
- This then also displays in the render window while editing
- But, only with Scene buttons option "Do Compositor" set
- Then, just press F12 or render anims to see the magic!

For clarity, the former 'Output" node is renamed to "Viewer".
2006-01-24 21:50:23 +00:00
Chris Want
164a7929ce Not a show stopper, and does not add or remove any functionality
... but a pythoner forgot to do a cast, causing an error with an
anally retentive compiler.
2006-01-24 17:23:01 +00:00
Johnny Matthews
3909f1d4a3 Prevent a mod by 0, should fix preview render crashes 2006-01-24 17:17:44 +00:00
Ton Roosendaal
74f76981bf Orange: preparation commit for Output nodes type "Render" and "File".
They dont work yet, but i accidentally committed parts of it with a bugfix.
2006-01-24 17:09:04 +00:00
Ton Roosendaal
9a20e5466c Orange bug: forgot to restore inverse matrix calculus for OpengGL render
in a window... didn't know what it was for, but now I do! It uses the
inverse to do pre-clipping on objects.
2006-01-24 17:07:39 +00:00
Ton Roosendaal
26b718654d Orange: fixes in Compositor:
- Curves in Image window didn't copy alpha (when no 32 bits rect for
  display was made already).
- Code was missing to validate grouped nodes in Compositor, didnt work
  at all yet
- Loading new Images in a Node (using filewindow) didn't assign the image

Image window now displays Alpha for float images too
2006-01-24 15:24:38 +00:00
Ton Roosendaal
771c7f3549 Orange fix: Render OGL skipped last frame... 2006-01-24 12:51:29 +00:00
Ton Roosendaal
a126178fd8 Orange: made Image window react nicer to compositor output and own Curves;
- Image curves are only applied now when curves panel is in use. Closing
  the panel will disable curves, reopen Panel enable curves.
  You can minimize the Curves panel to keep it active. That latter then
  works as visualization curves are being applied.

- Compositor output now also uses Image window curves, if active.
2006-01-24 10:35:43 +00:00
Ton Roosendaal
b1342e30b1 First bugfix in 3d previewrender; going full-window and back crashed.
Thanks Campbell! :)
2006-01-23 22:59:22 +00:00
Ton Roosendaal
9eadefee11 Scons changes needed to get it compile, works here! :) 2006-01-23 22:44:44 +00:00
Ton Roosendaal
042d612df2 Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:

Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.

Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender

PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)

3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!

Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)

The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again

OK... thats what I can quickly recall. Now go compiling!
2006-01-23 22:05:47 +00:00
Ton Roosendaal
58db0210a8 Bug in commit for 'linked scene sets', that got sneaked in after 2.40. :)
This fixes shaded mode in lostride demo file, also for scenes that use
sets in shaded drawmode, lighting now will look ok.
2006-01-23 21:13:48 +00:00
Mika Saari
f9bb1b534e The character table shouldn't messed anymore when <builtin> font is used. 2006-01-23 15:14:01 +00:00
Mika Saari
913c0bc0c7 Fixing the user interface bug when unicode font area list is exited
without selecting any area. This caused the area to be from 0 to 0.
Now if no any area selected, the whole area from 0 to 0xffff is shown.
2006-01-23 12:52:53 +00:00
Andrea Weikert
5668480c99 small fix for icons to correctly use alpha instead of converting grey background to alpha.
Also checking in cleaned up blenderbuttons from Matt.
2006-01-22 23:27:43 +00:00
Matt Ebb
651650ae01 2.41 splash 2006-01-22 23:00:55 +00:00