Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2006-02-05* Fixes memory leak in pipeline.cPeter Schlaile
* Makes the render pipeline work in arbitrary order to support frameserver rendering.
2006-02-04New Material option: "OnlyCast". This makes the object only cast shadows,Ton Roosendaal
not show up in renders, nor being mirrored.
2006-02-04== SCons ==Nathan Letwory
* This commit is all of the rewrite work done on the SCons system. For documentation see doc/blender-scons.txt and doc/blender-scons-dev.txt. Also http://mediawiki.blender.org/index.php/BlenderDev/SconsRefactoring contains valuable information, along with what still needs to be done. - linux, os x and windows compile now. - files are compiled to BF_INSTALLDIR (see config/(platform)-config.py) - NOTE: Jean-Luc P will commit sometime during the weekend proper appit() for OS X. For now, copy the resulting binary to an existing .app bundle. - features: - cleaner structure for better maintenance - cleaner output during compile - better handling of build options - general overall speed increase - see the wiki for more info Cygwin, FreeBSD and Solaris systems still need work. For these systems: 1) copy a config/(platform)-config.py to ie. config/cygwin-config.py 2) set the proper defaults for your platform 3) mail me at jesterking at letwory dot net with you configuration. if you need any modifications to the system, do send a patch, too. I'll be giving first-aid today and tomorrow, after that it'll be all regular development work :) /Nathan
2006-02-04More work on render stuff!Ton Roosendaal
- Scene support in RenderLayers You now can indicate in Compositor to use RenderLayer(s) from other scenes. Use the new dropdown menu in the "Render Result" node. It will change the title of the node to indicate that. The other Scenes are rendered fully separate, creating own databases (and octrees) after the current scene was finished. They use their own render settings, with as exception the render output size (and optional border). This makes the option an interesting memory saver and speedup. Also note that the render-results of other scenes are kept in memory while you work. So, after a render, you can tweak all composit effects. - Render Stats Added an 'info string' to stats, printed in renderwindow header. It gives info now on steps "creating database", "shadow buffers", and "octree". - Bug fixes Added redraw event for Image window, when using compositor render. Text objects were not rendered using background render (probably a bug since depsgraph was added) Dropdown buttons in Node editor were not refreshed after usage Sometimes render window did not open, this due to wrong check for 'esc'. Removed option that renders view-layers on F12, with mouse in 3d window. Not only was it confusing, it's now more efficient with the Preview Panel, which does this nicely.
2006-02-04Render feature request; when saving EXR files during anim render, it canTon Roosendaal
optionally save a jpg next to it, with compression as set in buttons. This allows quick previews or download from farms. Button: next to the 'half' and 'zbuf' options for exr.
2006-02-04Improved check for case when vector-blur speed table (previous frame) is ofTon Roosendaal
different size as current frame. It now just skips making vectors then... there exist solutions, but have to prove first vecblur actually works.
2006-02-03Redoing the blur filters for composit;Ton Roosendaal
http://www.blender.org/bf/filters/ I found out current blur actually doesn't do gauss, but more did regular quadratic. Now you can choose common filter types, but more specifically; - set gamma on, to emphasize bright parts in blur more than darker parts - use the bokeh option for (current circlular only) blur based on true area filters (meaning, for each pixel it samples the entire surrounding). This enables more effects, but is also much slower. Have to check on optimization for this still... use with care!
2006-02-03Crash fix! Found one unsafe malloc in allocating the Z render pass...Ton Roosendaal
Brought back threaded compositing, this was blamed incorrectly.
2006-02-03- Preview images get generated on render event againTon Roosendaal
- disabled threading for composit for now, it has a memory error still... will work on that tomorrow more.
2006-02-03Three feats;Ton Roosendaal
- RenderLayers with 'view layers' set, now also take visible lights into account. Works just like for scene layer settings. - On ESC from render, compositing (if set) is being skipped too - While rendering with multiple RenderLayers it will end with a display of the current RenderLayer (as in Scene buttons)
2006-02-02Render fix: object-duplicators now give their layer setting to theTon Roosendaal
duplicates, enabling lighting and layer-render properly.
2006-02-02features & fixes:Ton Roosendaal
- Enabled Groups to execute in Compositor. They were ignored still. Note; inside of groups nothing is cached, so a change of a group input will recalculate it fully. This is needed because groups are linked data (instances use same internal nodes). - Made Composit node "Viewer" display correctly input for images with 1/2/3/4 channels. - Added pass rendering, tested now with only regular Materials. For Material nodes this is quite more complex... since they cannot be easily separated in passes (each Material does a full shade) In this commit all pass render is disabled though, will continue work on that later. Sneak preview: http://www.blender.org/bf/rt.jpg (temporal image) - What did remain is the 'Normal' pass output. Normal works very nice for relighting effects. Use the "Normal Node" to define where more or less light should be. (Use "Value Map" node to tweak influence of the Normal node 'dot' output.) - EVIL bug fix: I've spend almost a day finding it... when combining AO and mirror render, the event queue was totally screwing up... two things not related at all! Found out error was in ray-mirror code, which was using partially uninitialized 'ShadeInput' data to pass on to render code. - Another fix; made sure that while thread render, the threads don't get events, only the main program will do. Might fix issues reported by people on linux/windows.
2006-02-01Made preview render only use non-threaded tile processor, got reportsTon Roosendaal
of crashes, and noticed here theres something not well functioning with ghost & threads, probably. Will test that tomorrow more.
2006-02-01Three features;Ton Roosendaal
- Live scanline updates while rendering Using a timer system, each second now the tiles that are being processed are checked if they could use display. To make this work pretty, I had to use the threaded 'tile processor' for a single thread too, but that's now proven to be stable. Also note that these updates draw per layer, including ztransp progress separately from solid render. - Recode of ztransp OSA Until now (since blender 1.0) the ztransp part was fully rendered and added on top of the solid part with alpha-over. This adding was done before the solid part applied sub-pixel sample filtering, causing the ztransp layer to be always too blurry. Now the ztransp layer uses same sub=pixel filter, resulting in the same AA level (and filter results) as the solid part. Quite noticable with hair renders. - Vector buffer support & preliminary vector-blur Node Using the "Render Layer" panel "Vector" pass button, the motion vectors per pixel are calculated and stored. Accessible via the Compositor. The vector-blur node is horrible btw! It just uses the length of the vector to apply a filter like with current (z)blur. I'm committing it anyway, I'll experiment with it further, and who knows some surprise code shows up!
2006-01-30More simple fixes to cleanup warnings and what not:Kent Mein
extern/bullet/BulletDynamics/ConstraintSolver/SimpleConstraintSolver.h added newline at end of file. intern/boolop/intern/BOP_Face2Face.cpp fixed indentation and had nested declarations of a varible i used for multiple for loops, changed it to just one declaration. source/blender/blenkernel/bad_level_call_stubs/stubs.c added prototypes and a couple other fixes. source/blender/include/BDR_drawobject.h source/blender/include/BSE_node.h source/blender/include/butspace.h source/blender/render/extern/include/RE_shader_ext.h added struct definitions source/blender/src/editmesh_mods.c source/gameengine/Ketsji/KX_BlenderMaterial.cpp source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp source/gameengine/Ketsji/KX_RaySensor.cpp removed unused variables; source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp changed format of case statements to avoid warnings in gcc. Kent
2006-01-30Bugfix: missing faces on edge of imageTon Roosendaal
Yesterdays commit slightly extended clipping area for window, to ensure no empty borders get rendered. Unfortunately it reveiled a case in code that was never handled; clipping code was throwing away good faces. Old bug... but apparently never showed up?
2006-01-30Created threadsafe MEM_malloc versions in BLI_threads.h, now in useTon Roosendaal
for compositing code. Officially malloc/calloc/free is threadsafe, but our secure malloc system requires all memory blocks to be stored in a single list, so when two threads write in this list you get conflicts.
2006-01-30When using Duplicated Objects (like vertex dupli) the original isn'tTon Roosendaal
rendered anymore, to prevent overlapping situations. This worked before. Note; group dupli stuff will test later. :)
2006-01-30Two issues solved in render recode;Ton Roosendaal
- the sub-pixel masks for applying correct filters (gauss and friends) accidentally were y-flipped, causing bad looking results. - zbuffer was clipping extremely narrow, causing border pixels to miss samples, and reveiling alpha that way (was in old render a prob too)
2006-01-29Previous fix was in wrong part of code... not alpha adding was wrong, butTon Roosendaal
there was an error in the zbuffer code! This should fix combinations of using Ztransp and Solid faces.
2006-01-29Accidentally mixed up addAlphaUnder and addAlphaOver in merging solid andTon Roosendaal
ztransp layers, for OSA renders. :)
2006-01-29Three-in-one commit:Ton Roosendaal
- 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-28Two missing declarations in this include file.Ton Roosendaal
2006-01-28Wow! bugfix in bf-blender again!Ton Roosendaal
Simon C. gave me a nice crash.blend, in zbuffered transparent render. Was a malloc that should become calloc... :)
2006-01-28Orange: made Compositing more interactive. It now has an event basedTon Roosendaal
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-28Orange: fix for threaded rendering. Discovered that for some reason theTon Roosendaal
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-28Orange: previous commit for render-layers didn't update the case forTon Roosendaal
3d window preview-render.
2006-01-27Orange; more render & compo stuff!Ton Roosendaal
-> 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-25Orange:Ton Roosendaal
- Missing free in AVI writing - time counter for animation render wasn't reset to zero on successive renders.
2006-01-25Orange: new pipeline separated calculus for window matrix from convertingTon Roosendaal
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-25Forgot to pass on current frame number to compositor, when render anims!Ton Roosendaal
2006-01-25Orange fix: jitter mask for OSA was off with half a pixel...Ton Roosendaal
There seems to be a wrong offset for non-osa too, will look into that now.
2006-01-25Orange: enabled compositing in render pipeline.Ton Roosendaal
- 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-24Prevent a mod by 0, should fix preview render crashesJohnny Matthews
2006-01-24Scons changes needed to get it compile, works here! :)Ton Roosendaal
2006-01-24Giant commit!Ton Roosendaal
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-12Optimization -frerun-cse-after-loop (included with -O2) wasChris Want
causing render to crash on cygwin with gcc 3.4.4. Changed declaration of shadepixel() argument "int facenr" to volatile. Can anybody recommend a more elegant solution?
2006-01-12Orange: Ortho camera now gives correct z values for buffers too.Ton Roosendaal
2006-01-12Orange;Ton Roosendaal
Until now, the zbuffer was written straight from the internal zbuffer, which has values that are inverse-proportional (like 1.0/z) which makes it very hard to use it for postprocess, like zblur or other composit effects that require Z. Based on info from ILM, the values stored for Z in exr files is the actual distance from a camera. I think that's about time to migrate to that convention! By default now, after render, the z values are converted to floats. This saves in exr files now, but not in the Iris Z files. That latter was a blender-only anyway, so might be not a real hassle to drop. :) You can see the difference in the image window, but notice the range now is linear mapped from camera clipstart to clipend. Note; I just discover that ortho Z values need a different correction...
2006-01-11Orange: more float buffer support;Ton Roosendaal
- Image textures use float colors now, when present. Works for mipmap too, and for AO skycolor (probes) - Backbuffer option uses float buffers too. Note that rendering OSA will resample the backbuffer, filtering it... will need to be solved with the new composit stage - LMB sampling in image window now shows float color too + bugfix in imbuf, filtering for float buffers had an error.
2006-01-10Orange:Ton Roosendaal
Accidentally didn't disable the tests I did for 'translucent raytrace', a cheapskate SSS method; http://www.blender.org/bf/rt.jpg http://www.blender.org/bf/rt1.jpg It slowed down render too much, was default on... but invisible! It needed the F10 buttons "rt" to be huge (600-1000)
2006-01-09Orange branch: OpenEXR finally in Blender!Ton Roosendaal
Credits go to Gernot Ziegler, who originally coded EXR support, and to Austin Benesh for bringing it further. Kent Mein provided a lot of code for integrating float buffers in Blender imbuf and ImBuf API cleanup, and provided Make and Scons and static linking. At this moment; the EXR libraries are a *dependency*, so you cannot get the Orange branch compiled without having OpenEXR installed. Get the (precompiled or sources) stuff from www.openexr.com. Current default is that the headers and lib resides in /user/local/ Several changes/additions/fixes were added: - EXR code only supported 'half' format (16 bits per channel). I've added float writing, but for reading it I need tomorrow. :) - Quite some clumsy copying of data happened in EXR code. - cleaned up the api calls already a bit, preparing for more advanced support - Zbuffers were saved 16 bits, now 32 bits - automatic adding of .exr extensions went wrong Imbuf: - added proper imbuf->flags and imbuf->mall support for float buffers, it was created for *each* imbuf. :) - found bugs for float buffers in scaling and flipping. Code there will need more checks still - imbuf also needs to be verified to behave properly when no 32 bits rect exists (for saving for example) TODO: - support internal float images for textures, backbuf, AO probes, and display in Image window Hope this commit won't screwup syncing with bf-blender... :/
2006-01-04Orange; merger with bf-blender.Ton Roosendaal
(Merging is *not* fun work, especially not with bugfixes in main branch for code that got cleaned up in the other! Poor Hos... :)
2006-01-03Bugfix #3673Ton Roosendaal
Threadsafe patch for environment maps type "Load" missed to include a call, so still crashed. Only for non-debug builds though, so not reported earlier. From my cvs log 7 months ago: "Added threadsafe patch from Martin. Now envmaps of type "Load" should not give errors. I assume Martin tested!" :)
2006-01-03Bug #3681 The never ending bump mapping saga!Ton Roosendaal
With the fix over a month ago, which added correct texture space vectors for the bump, gave results so crispy that normals could invert after normalize. This only when the normal "fac" slider was > 1.0. The normals from imagetextures now get clipped to prevent it to result in flipping normals. Will do more tests though... Also note that the real good way would be have the tangent vectors for the actual render normal available to perturb for bump, thats another story.
2006-01-02Orange; another node update for reviewing.Ton Roosendaal
Material Nodes now have input sockets, to override the actual Material settings. If socket has no input, you can also edit Material settings here. (Color picker, number slider). Of course a load of options will become available here, first bugfixing! (Oh, and enable fix thread render)
2006-01-02Orange; made Node types Texture and Geometry integrated in render. MeansTon Roosendaal
the coordinate outputs now have correct dx/dy vectors for Image AA, and texture delivers correct intensity, rgb, alpha and normal. Note; we need a "Vector Mapping" node, to do 2d/3d mapping, like in the Material "Map In" panel.
2006-01-02Orange: more noodle updates!Ton Roosendaal
**** NEW: Group Nodes Node trees usually become messy and confusing quickly, so we need not only a way to collapse Nodes into single 'groups', but also a way to re-use that data to create libraries of effects. This has been done by making a new Library data type, the NodeTree. Everything that has been grouped is stored here, and available for re-use, appending or linking. These NodeTrees are fully generic, i.e. can store shader trees, composit trees, and so on. The 'type' value as stored in the NodeTree will keep track of internal type definitions and execute/drawing callbacks. Needless to say, re-using shader trees in a composit tree is a bit useless, and will be prevented in the browsing code. :) So; any NodeTree can become a "Goup Node" inside in a NodeTree. This Group Node then works just like any Node. To prevent the current code to become too complex, I've disabled the possibility to insert Groups inside of Groups. That might be enabled later, but is a real nasty piece of code to get OK. Since Group Nodes are a dynamic Node type, a lot of work has been done to ensure Node definitions can be dynamic too, but still allow to be stored in files, and allow to be verified for type-definition changes on reloading. This system needs a little bit maturing still, so the Python gurus should better wait a little bit! (Also for me to write the definite API docs for it). What works now: - Press CTRL+G to create a new Group. The grouping code checks for impossible selections (like an unselected node between selected nodes). Everthing that's selected then gets removed from the current tree, and inserted in a new NodeTree library data block. A Group Node then is added which links to this new NodeTree. - Press ALT+G to ungroup. This will not delete the NodeTree library data, but just duplicate the Group into the current tree. - Press TAB, or click on the NodeTree icon to edit Groups. Note that NodeTrees are instances, so editing one Group will also change the other users. This also means that when removing nodes in a Group (or hiding sockets or changing internal links) this is immediately corrected for all users of this Group, also in other Materials. - While editing Groups, only the internal Nodes can be edited. A single click outside of the Group boundary will close this 'edit mode'. What needs to be done: - SHIFT+A menu in toolbox style, also including a list of Groups - Enable the single-user button in the Group Node - Displaying all (visible) internal group UI elements in the Node Panel - Enable Library linking and prevent editing of Groups then. **** NEW: Socket Visibility control Node types will be generated with a lot of possible inputs or outputs, and drawing all sockets all the time isn't very useful then. A new option in the Node header ('plus' icon) allows to either hide all unused sockets (first keypress) or to reveil them (when there are hidden sockets, the icon displays black, otherwise it's blended). Hidden sockets in Nodes also are not exported to a Group, so this way you can control what options (in/outputs) exactly are available. To be done: - a way to hide individual sockets, like with a RMB click on it. **** NEW: Nodes now render! This is still quite primitive, more on a level to replace the (now obsolete and disabled) Material Layers. What needs to be done: - make the "Geometry" node work properly, also for AA textures - make the Texture Node work (does very little at the moment) - give Material Nodes all inputs as needed (like Map-to Panel) - find a way to export more data from a Material Node, like the shadow value, or light intensity only, etc Very important also to separate from the Material Buttons the "global" options, like "Ztransp" or "Wire" or "Halo". These can not be set for each Material-Node individually. Also note that the Preview Render (Buttons window) now renders a bit differently. This was a horrid piece of antique code, using a totally incompatible way of rendering. Target is to fully re-use internal render code for previews. OK... that's it mostly. Now test!
2006-01-01Orange <-> bf-blender conflict, with 2.40 saved files the version-patch toTon Roosendaal
initialize the (soon obsolete) material layers was skipped, causing it all to be rendered black.
2005-12-28Christmas coding work!Ton Roosendaal
********* Node editor work: - To enable Nodes for Materials, you have to set the "Use Nodes" button, in the new Material buttons "Nodes" Panel or in header of the Node editor. Doing this will disable Material-Layers. - Nodes now execute materials ("shaders"), but still only using the previewrender code. - Nodes have (optional) previews for rendered images. - Node headers allow to hide buttons and/or preview image - Nodes can be dragged larger/smaller (right-bottom corner) - Nodes can be hidden (minimized) with hotkey H - CTRL+click on an Input Socket gives a popup with default values. - Changing Material/Texture or Mix node will adjust Node title. - Click-drag outside of a Node changes cursor to "Knife' and allows to draw a rect where to cut Links. - Added new node types RGBtoBW, Texture, In/Output, ColorRamp - Material Nodes have options to ouput diffuse or specular, or to use a negative normal. The input socket 'Normal' will force the material to use that normal, otherwise it uses the normal from the Material that has the node tree. - When drawing a link between two not-matching sockets, Blender inserts a converting node (now only for value/rgb combos) - When drawing a link to an input socket that's already in use, the old link will either disappear or flip to another unused socket. - A click on a Material Node will activate it, and show all its settings in the Material Buttons. Active Material Nodes draw the material icon in red. - A click on any node will show its options in the Node Panel in the Material buttons. - Multiple Output Nodes can be used, to sample contents of a tree, but only one Output is the real one, which is indicated in a different color and red material icon. - Added ThemeColors for node types - ALT+C will convert existing Material-Layers to Node... this currently only adds the material/mix nodes and connects them. Dunno if this is worth a lot of coding work to make perfect? - Press C to call another "Solve order", which will show all possible cyclic conflicts (if there are). - Technical: nodes now use "Type" structs which define the structure of nodes and in/output sockets. The Type structs store all fixed info, callbacks, and allow to reconstruct saved Nodes to match what is required by Blender. - Defining (new) nodes now is as simple as filling in a fixed Type struct, plus code some callbacks. A doc will be made! - Node preview images are by default float ********* Icon drawing: - Cleanup of how old icons were implemented in new system, making them 16x16 too, correctly centered *and* scaled. - Made drawing Icons use float coordinates - Moved BIF_calcpreview_image() into interface_icons.c, renamed it icon_from_image(). Removed a lot of unneeded Imbuf magic here! :) - Skipped scaling and imbuf copying when icons are OK size ********* Preview render: - Huge cleanup of code.... - renaming BIF_xxx calls that only were used internally - BIF_previewrender() now accepts an argument for rendering method, so it supports icons, buttonwindow previewrender and node editor - Only a single BIF_preview_changed() call now exists, supporting all signals as needed for buttos and node editor ********* More stuff: - glutil.c, glaDrawPixelsSafe() and glaDrawPixelsTex() now accept format argument for GL_FLOAT rects - Made the ColorBand become a built-in button for interface.c Was a load of cleanup work in buttons_shading.c... - removed a load of unneeded glBlendFunc() calls - Fixed bug in calculating text length for buttons (ancient!)