2004-05-16 13:07:20 +00:00
|
|
|
#!/usr/bin/python
|
2004-02-15 19:25:32 +00:00
|
|
|
Import ('user_options_dict')
|
2004-02-29 21:40:48 +00:00
|
|
|
Import ('library_env')
|
|
|
|
|
|
|
|
|
|
blenkernel_env = library_env.Copy ()
|
2004-01-04 21:11:59 +00:00
|
|
|
|
|
|
|
|
source_files = ['intern/constraint.c',
|
2005-04-30 21:27:05 +00:00
|
|
|
'intern/depsgraph.c',
|
2005-03-28 02:05:36 +00:00
|
|
|
'intern/DerivedMesh.c',
|
2004-01-04 21:11:59 +00:00
|
|
|
'intern/group.c',
|
2005-12-21 22:21:43 +00:00
|
|
|
'intern/icons.c',
|
2004-01-04 21:11:59 +00:00
|
|
|
'intern/material.c',
|
|
|
|
|
'intern/sca.c',
|
|
|
|
|
'intern/world.c',
|
|
|
|
|
'intern/curve.c',
|
|
|
|
|
'intern/mball.c',
|
|
|
|
|
'intern/scene.c',
|
|
|
|
|
'intern/writeavi.c',
|
|
|
|
|
'intern/action.c',
|
|
|
|
|
'intern/deform.c',
|
|
|
|
|
'intern/image.c',
|
|
|
|
|
'intern/mesh.c',
|
2005-07-19 20:14:17 +00:00
|
|
|
'intern/modifier.c',
|
2004-01-04 21:11:59 +00:00
|
|
|
'intern/screen.c',
|
|
|
|
|
'intern/anim.c',
|
|
|
|
|
'intern/displist.c',
|
|
|
|
|
'intern/ipo.c',
|
|
|
|
|
'intern/nla.c',
|
|
|
|
|
'intern/sound.c',
|
|
|
|
|
'intern/armature.c',
|
|
|
|
|
'intern/effect.c',
|
|
|
|
|
'intern/key.c',
|
|
|
|
|
'intern/object.c',
|
2005-03-22 07:45:20 +00:00
|
|
|
'intern/CCGSubSurf.c',
|
|
|
|
|
'intern/subsurf_ccg.c',
|
2004-01-04 21:11:59 +00:00
|
|
|
'intern/blender.c',
|
|
|
|
|
'intern/exotic.c',
|
|
|
|
|
'intern/lattice.c',
|
|
|
|
|
'intern/packedFile.c',
|
|
|
|
|
'intern/text.c',
|
|
|
|
|
'intern/script.c',
|
|
|
|
|
'intern/bmfont.c',
|
|
|
|
|
'intern/font.c',
|
|
|
|
|
'intern/library.c',
|
|
|
|
|
'intern/property.c',
|
2005-03-22 07:45:20 +00:00
|
|
|
'intern/softbody.c',
|
2005-12-18 13:52:07 +00:00
|
|
|
'intern/node.c',
|
Orange; daily noodler update commit.
- Adding execution code for Node trees. Was a bit a puzzle, since I want
it to be multithreading by design. This now is solved by defining a
stack per tree for all data that's being written into. This stack, which
resides now in the NodeTree itself, then can be allocated per thread.
- For testing pleasure, I've added a 'mix node' and a 'show node', so
you can already see it do something. :)
- reshuffled structure, to put things nice together, and have easier node
adding. Current state is still WIP though, structure might change.
For the record; new file node_shaders.c will contain all shader node
definitions, apart from the drawing callbacks.
Next: I'm going to check on Andrea's work on icons now, since this is very
much needed for true shader/composit work.
Now back to release work...
2005-12-21 14:24:51 +00:00
|
|
|
'intern/node_shaders.c',
|
2006-01-28 19:25:43 +00:00
|
|
|
'intern/node_composite.c',
|
Orange:
- New UI element: the "Curve Button".
For mapping ranges (like 0 - 1) to another range, the curve button can be
used for proportional falloff, bone influences, painting density, etc.
Most evident use is of course to map RGB color with curves.
To be able to use it, you have to allocate a CurveMapping struct and pass
this on to the button. The CurveMapping API is in the new C file
blenkernel/intern/colortools.c
It's as simple as calling:
curvemap= curvemapping_add(3, 0, 0, 1, 1)
Which will create 3 curves, and sets a default 0-1 range. The current code
only supports up to 4 curves maximum per mapping struct.
The CurveMap button in Blender than handles allmost all editing.
Evaluating a single channel:
float newvalue= curvemapping_evaluateF(curvemap, 0, oldval);
Where the second argument is the channel index, here 0-1-2 are possible.
Or mapping a vector:
curvemapping_evaluate3F(curvemap, newvec, oldvec);
Optimized versions for byte or short mapping is possible too, not done yet.
In butspace.c I've added a template wrapper for buttons around the curve, to
reveil settings or show tools; check this screenie:
http://www.blender.org/bf/curves.jpg
- Buttons R, G, B: select channel
- icons + and -: zoom in, out
- icon 'wrench': menu with tools, like clear curve, set handle type
- icon 'clipping': menu with clip values, and to dis/enable clipping
- icon 'x': delete selection
In the curve button itself, only LMB clicks are handled (like all UI elements
in Blender).
- click on point: select
- shift+click on point: swap select
- click on point + drag: select point (if not selected) and move it
- click outside point + drag: translate view
- CTRL+click: add new point
- hold SHIFT while dragging to snap to grid
(Yes I know... either one of these can be Blender compliant, not both!)
- if you drag a point exactly on top of another, it merges them
Other fixes:
- Icons now draw using "Safe RasterPos", so they align with pixel boundary.
the old code made ints from the raster pos coordinate, which doesn't work
well for zoom in/out situations
- bug in Node editing: buttons could not get freed, causing in memory error
prints at end of a Blender session. That one was a very simple, but nasty
error causing me all evening last night to find!
(Hint; check diff of editnode.c, where uiDoButtons is called)
Last note: this adds 3 new files in our tree, I did scons, but not MSVC!
2006-01-08 11:41:06 +00:00
|
|
|
'intern/colortools.c',
|
2004-01-04 21:11:59 +00:00
|
|
|
'intern/texture.c']
|
|
|
|
|
|
|
|
|
|
blenkernel_env.Append (CPPPATH = ['.',
|
2005-08-04 16:05:28 +00:00
|
|
|
'../blenkernel',
|
2004-01-04 21:11:59 +00:00
|
|
|
'#/intern/guardedalloc',
|
|
|
|
|
'../include',
|
|
|
|
|
'../blenlib',
|
|
|
|
|
'../makesdna',
|
|
|
|
|
'../python',
|
|
|
|
|
'../render/extern/include',
|
2005-07-26 13:15:29 +00:00
|
|
|
'../../../intern/decimation/extern',
|
2004-01-04 21:11:59 +00:00
|
|
|
'../imbuf',
|
|
|
|
|
'../avi',
|
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
|
|
|
'../quicktime',
|
2005-09-18 13:27:12 +00:00
|
|
|
'#/intern/elbeem/extern',
|
2004-01-04 21:11:59 +00:00
|
|
|
'#/intern/iksolver/extern',
|
|
|
|
|
'../blenloader'])
|
|
|
|
|
|
2004-02-23 14:39:08 +00:00
|
|
|
if user_options_dict['USE_INTERNATIONAL'] == 1:
|
|
|
|
|
blenkernel_env.Append (CPPDEFINES = 'WITH_FREETYPE2')
|
|
|
|
|
|
2005-03-22 07:45:20 +00:00
|
|
|
#fixme: if user_options_dict['USE_CCGSUBSURFLIB'] == 1:
|
|
|
|
|
# blenkernel_env.Append (CPPDEFINES = 'WITH_CCGSUBSURF')
|
|
|
|
|
|
2004-02-15 19:25:32 +00:00
|
|
|
blenkernel_env.Library (target='#'+user_options_dict['BUILD_DIR']+'/lib/blender_blenkernel', source=source_files)
|
2004-06-04 12:58:46 +00:00
|
|
|
|
|
|
|
|
SConscript(['bad_level_call_stubs/SConscript'])
|
2005-04-05 15:02:21 +00:00
|
|
|
|
|
|
|
|
blenkernel_env.Append (CPPPATH = user_options_dict['OPENGL_INCLUDE'])
|
2005-07-28 18:11:10 +00:00
|
|
|
blenkernel_env.Append (CPPPATH = user_options_dict['Z_INCLUDE'])
|
2005-09-18 13:27:12 +00:00
|
|
|
blenkernel_env.Append (CPPPATH = user_options_dict['SDL_INCLUDE'])
|