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-12-21Added names to UV and vertex color layers, and display them as a list.Brecht Van Lommel
Added support for multiple UVs in the render engine. This also involved changing the way faces are stored, to allow data to be added optionally per 256 faces, same as the existing system for vertices. A UV layer can be specified in the Map Input panel and the Geometry node by name. Leaving this field blank will default to the active UV layer. Also added sharing of face selection and hiding between UV layers, and at the same time improved syncing with editmode selection and hiding. Still to do: - Multi UV support for fastshade. - Multires and NMesh preservation of multiple UV sets.
2006-12-20The Big Image refactor!Ton Roosendaal
Please read: http://www.blender3d.org/cms/Imaging.834.0.html Or in short: - adding MultiLayer Image support - recoded entire Image API - better integration of movie/sequence Images Was a whole load of work... went down for a week to do this. So, will need a lot of testing! Will be in irc all evening.
2006-12-08Lightgroups!Ton Roosendaal
Functionality was a bit limited still; now added the option to bind a group of Lamps entirely to a Material, excluding them from any other Material. Note that Lamp visibility layer options still work as for Lamps usually. In preview.blend: made a lightgroup for all lamps, and set them to be the "RenderLayer override". That way it will ignore local material lightgroups for previews.
2006-12-08Numerous fixes in Render code:Ton Roosendaal
- Bug: material emit was ignored (showed in preview render backdrop) - Bug: world exposure was ignored - Bug: lamp halo was ignoring 'render layer light override'. Further reshuffled the way shadows are being pre-calculated, this to enable more advanced (and faster) usage of Material lightgroups. Now shadows are being cached in lamps, using a per-sample counter to check if a recalc is needed. Will also work (later) for Raytracing node shaders. - New: Material LightGroup option "Always", which always shades the lights in the group, independent of visibility layer. (so it allows to move such lights to hidden layer, not influencing anything).
2006-12-05Next stage of RenderPipe refactor: now everything within the pixel wasTon Roosendaal
tackled. Resulting features: - render passes - new pass: Object Index, for masking - sub-sample alpha masks Docs: http://mediawiki.blender.org/index.php/BlenderDev/RenderPipeline http://www.blender3d.org/cms/Render_Passes.829.0.html http://www.blender3d.org/cms/New_Render_features.774.0.html Note that these changes might mean things to not render fully identical... For the next days a lot of testing is needed!
2006-11-29Render Monster support: (part 1)Ton Roosendaal
Removed all limitations from render code for maximum threads. The only define for this now is in BLI_threads.h, and currently set to 8. Note that each thread renders an entire tile, and also allocates the buffers for the tiles, so; more threads might work better with smaller tiles. IMPORTANT: node system won't work yet with more than 2 threads! So, don't try material nodes or compositing with over 2 threads. That I'll commit later today. What does work (should work :) is AO and soft shadow now.
2006-11-22Render Baking candy: while baking, the UV Image window shows the progressTon Roosendaal
in rendered images, once per second. Also switches to other images. This happens threaded, so might need a good test :)
2006-11-20Added custom vertex/edge/face data for meshes:Brecht Van Lommel
All data layers, including MVert/MEdge/MFace, are now managed as custom data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are still used of course, but allocating, copying or freeing these arrays should be done through the CustomData API. Work in progress documentation on this is here: http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData Replaced TFace by MTFace: This is the same struct, except that it does not contain color, that now always stays separated in MCol. This was not a good design decision to begin with, and it is needed for adding multiple color layers later. Note that this does mean older Blender versions will not be able to read UV coordinates from the next release, due to an SDNA limitation. Removed DispListMesh: This now fully replaced by DerivedMesh. To provide access to arrays of vertices, edges and faces, like DispListMesh does. The semantics of the DerivedMesh.getVertArray() and similar functions were changed to return a pointer to an array if one exists, or otherwise allocate a temporary one. On releasing the DerivedMesh, this temporary array will be removed automatically. Removed ssDM and meshDM DerivedMesh backends: The ssDM backend was for DispListMesh, so that became obsolete automatically. The meshDM backend was replaced by the custom data backend, that now figures out which layers need to be modified, and only duplicates those. This changes code in many places, and overall removes 2514 lines of code. So, there's a good chance this might break some stuff, although I've been testing it for a few days now. The good news is, adding multiple color and uv layers should now become easy.
2006-11-19Render Baking:Ton Roosendaal
- Bugfix: vertex normals were still flipped around, to match viewpoint rendering. - New: option to bake a texture+material only
2006-11-19Long waited feature: Render BakingTon Roosendaal
Here's the full release log with example file. http://www.blender3d.org/cms/Render_Baking.827.0.html For people who don't read docs; just press ALT+CTRL+B on a Mesh with texture faces! Todos: - maybe some filter options extra? - Make normal maps in Tangent space
2006-11-12Ooops, previous commit of mine forgot to commit the .h file.Ton Roosendaal
2006-11-10Bugfix #5199Ton Roosendaal
Irregular shadow buffer, for solid OSA case, suffered aliasing. This caused by optimized storage of shadow factors in 1 pixel (averaged for all sub samples). That didn't work well really... Now the code uses same method as for transparent faces, storing results for each sample.
2006-10-15Another shadowbuffer goodie: the "Halfway trick"Ton Roosendaal
http://www.blender3d.org/cms/Shadow_buffer__Halfway.786.0.html Simply said: by using the average of the nearest and 2nd nearest Z value in Shadowbuffers you can reduce bias errors very well. For backwards compatibility it is a new buffer type though.
2006-10-14New shadow feature: Irregular Shadow BuffersTon Roosendaal
Full log: http://www.blender3d.org/cms/Irregular_Shadow_Buffe.785.0.html In short: this is a shadow buffer approach that always results in crispy shadows, independent of lamp buffer size or zoom level. This shadow buffer system also supports transparent shadow. This is part of work on refreshing Shadow Buffers in Blender. You now can choose of two types (Classical, Irregular). More types will follow. Also quality issues for Classical shadow buffers are going to be reviewed, especially to solve the lousy Biasing. For the CVS log record; it is based on articles: Gregory Johnson et al, University of Texas, Austin. (Regular grid method). Timo Aila and Samuli Laine, Helsinki University of Technology. (BSP method).
2006-08-31Render feature request:Ton Roosendaal
Auto-clip Lamp Buffer Setting a good range for clipping start/end for Lamp buffers is important for good quality shadow (depth details). That can be quite a hassle, when many lamps or animated objects are involved. This option allows to have the clipping range calculated based on the visible vertices in the spotbundle. For clip start and clip end it can be set individually. Typically the clip start defines quality most. The shadow buffer 'bias' value is corrected for this automatic clipping too, to ensure that ranges that differ give same biasing appearance. (If this wasn't done, you would see lighted areas become darker or lighter, or even artefacts, when the range changes suddenly NOTE: since it only checks for vertices, be aware that large planes can give errors. Implementation note: zbuffer values are non-linear (1/z) because that allows linear interpolation while filling scanlines. That's the main reason for the precision to be highest close to the eye (or lamp). It's even a useful feature, since you want details to be precise when they're closeby. Since these values are also in the -1 to 1 range, using floats here wouldn't solve problems a lot. Maybe trying a 64 bits Z once might be an interesting coding job.
2006-08-12Bugreport #4787 mentioned subpixel render issues, especially for smallTon Roosendaal
images (like used for rendering icons). When working during Orange on new render pipeline, I've left this topic alone for a while... subpixel precision testing is very time consuming and needs concentration for a while. :) This commit brings back precision as it was for 2.41. Below a short explanation of the solved issues. - the window matrix for rendering is kept constant during all OSA passes, this to ensure clipping happens for each pass identically. - a subpixel offset is only applied on filling in the z-buffer - this offset is inverse corrected for shadepixel code, only on 2 places Another nasty issue is that for filtered rendering (gauss etc), the tiles (or entire image) is temporally increased 2 pixel in size. This caused a 'dark' (or sky color) edge on the rendering. During Orange that was solved with a hardcoded clipping offset value, which only corrected for larger pictures (like > 500 pixels in size). Now this clipping offset is correctly calculated, based on render size. Last issue: the view border in 3d window was calculated using integers, giving small errors in display too. Now it uses float, so visually the view border is more close to what a render shows.
2006-07-13Paranoia commit to eliminate threads issues or uninitialized var stuff.Ton Roosendaal
- thread render stores per thread and per lamp the last intersected shadow face - the Isect struct, for intersections, could use a couple of extra zeros on start.
2006-07-02Bugfix #4558Ton Roosendaal
Thread render error: a flag was stored in read-only data to indicate whether top or bottom hemisphere of sky was rendered. That can't work with tiles (but did work when scanlines were threads).
2006-06-25Dunno how... maybe during Orange merging, but these files should have beenTon Roosendaal
removed from CVS too!
2006-06-16Plumiferos fix-fix :)Ton Roosendaal
Code to allow "Env" material to mask out ztransp gave bad AA on edges of solid faces, when transparant was behind it. Recoded "Env" to use index -1 in the polygon index buffer, and restored code that caused the bad AA.
2006-06-13Lens flare rendering back.... completely forgot about this antiqueTon Roosendaal
feature. It doesn't render preview yet... for that we have to fix preview system.
2006-06-10Thought to be nice for for backwards compat && users... so the oldTon Roosendaal
"Backbuf" image render option is back :) Nicer coded, using Image texture functions. If you want 100% reliable pixel to pixel accuracy you have to use compositing. (Old Backbuf didn't do this accuracy either btw).
2006-05-27So! Finally time to work on finishing render pipeline project.Ton Roosendaal
This commit brings back: - Field Render - MBlur Render (old style) - Border render with or without cropping Note: Field Render is not supported in Compositor yet. Blurring or filter will destroy field information. Both MotionBlur as Field render are done before Compositing happens. Fixes: - The "Save Buffers" option only worked on single frame renders, not for Anim render. - Found an un-initalized variable in Render initialize... this might have caused the unknown random crashes with render. Code restructure: Cleaned up names and calls throughout the pipeline, more clearly telling what goes on in functions. This is visible in the updated first image of the Wiki doc: http://mediawiki.blender.org/index.php/BlenderDev/RenderPipeline
2006-03-24a bunch of small warnings fixes:Kent Mein
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-19More environment map stuff:Ton Roosendaal
- 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-19Added option to only render a single side of an Environment map cube,Ton Roosendaal
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-12A couple of render improvements;Ton Roosendaal
- 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-06Render option "Single Layer" now keeps the already rendered other layers,Ton Roosendaal
and after rendering restores them. Also means this option works for compositing now.
2006-02-27Recoded Panorama rendering.Ton Roosendaal
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-24Made the most critical variables in render pipeline "volatile", especiallyTon Roosendaal
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-23Work in progress commit on saving OpenEXR with all render-layers andTon Roosendaal
passes in single file. Code is currently disabled, commit is mainly to have a nicer method of excluding OpenEXR dependency from render module. This should compile with disabled WITH_OPENEXR too. Reason why EXR is great to include by default in Blender is its feature to store unlimited layers and channels, and write this tile based. I need the feature for saving memory; while rendering tiles, all full-size buffers for all layers and passes are kept in memory now, which can go into 100s of MB easily. The code I commit now doesn't allocate these buffers while rendering, but saves the tiles to disk. In the end is it read back. Overhead for large renders (like 300 meg buffers) is 10-15 seconds, not bad. Two more interesting aspects: - Blender can save such multi-layer files in the temp directory, storing it with .blend file name and scene name. That way, on each restart of Blender, or on switching scenes, these buffers can be read. So you always see what was rendered last. Also great for compositing work. - This can also become an output image type for rendering. There's plenty of cases where you want specific layers or passes saved to disk for later use. Anyhoo, finishing it is another days of work, and I got more urgent stuff now!
2006-02-16Rendering tricks for improving workflow:Ton Roosendaal
- Button option "Single" in render-layer panel will enable to only render the currently indicated render-layer. It will also skip compositing. - Brought back the 'Local View' render. This will only render the visible objects, but with lights from the original view-layers. To make the option useful, it also temporal enables 'Single', which has the a disadvantage that you need to set the correct render-layer. It is a bit a tricky option though... since its quite invisble and confusing for people who don't know the feature. This might become either a button in 3d header, or use a popup requester to confirm, or... will need to think over! At least; both options display in render window a text to denote the option.
2006-02-15We found out memory got fragmented a lot for creating speed vectors onTon Roosendaal
large scenes... this because it has to make 3 entire databases to find the vertex-speed to previous and next frame. Even though most of the prev/next database was freed, the parts I kept were spread all over memory. This commit copies from the prev/next database only the two screen aligned speed vectors and stores that in temporal per-object structs. Even whilst it takes more memory, it then can free the entire database, making space for the next database to be built. Tests reveiled it saves quite some... well, if you want to believe the 'virtual memory' total unix gives... :)
2006-02-12Work on shadowbuffer system... right now only new filtertypes forTon Roosendaal
sampling have been activated for UI. Check the pictures here: http://www.blender.org/bf/filters/index2.html I also did do tests with anti-aliased shadowbuffers: http://www.blender.org/bf/filters/index3.html But this needs more thinking over still...
2006-02-11Thread rendering stability commit.Ton Roosendaal
I noticed still several cases where the Imbuf library was called within a thread... and that whilst the Imbuf itself isn't threadsafe. Also the thread lock I added in rendering for loading images actually didn't work, because then it was still possible both threads were accessing the MEM_malloc function at same time. This commit nearly fully replaces ImBuf calls in compositor (giving another nice speedup btw, the way preview images in Nodes were calculated used clumsy imbuf scaling code). I've also centralized the 'mutex' locking for threading, which now only resides in BLI_threads.h. This is used to secure the last ImBuf calls I cannot replace, which is loading images and creating mipmaps. Really hope we get something more stable now!
2006-02-10Addition to previous commit: disabling RenderLayer "Halo" did not skipTon Roosendaal
lamphalo rendering yet... silly me!
2006-02-08Upgraded max limit for faces in render. Up to now, quads were zbufferedTon Roosendaal
as triangles, with a tag bit to denote which triangle was which part of the quad. That was hardcoded bit 0x800000, which allows a maximum of about 8 million quads... I've made this a nice #define, set to be 16 times larger. So, now the facejunkies can go up to 128 Million faces, were it not that this will eat up a load of memory! I only have 1 Gig in this machine. A test with 9M vertices and 7.5M quads eats up 912 MB of memory already. If this becomes a real issue, I know tricks how to make the vertices 20 bytes smaller, and faces 4 bytes, which would in the above case save about 200 MB. Not much... but probably worth the try? A much better method is of course 'bucketing' the renderdata per tile. It's a spec of the render recode, but not a quicky to add. Also: bug fix in curve code. There was a short counter still, crashing on large curves with resol set to 1024 :)
2006-02-08New:Ton Roosendaal
- ZTransp render now also delivers Z values and Speed vectors in passes Note that speed vectors accumulate within a pixel to store the minimum, so rendering ztransp on top of a non-moving plane won't give speed... Best results you get is by rendering it in a separate layer. The Z value stored is the closest visible transparent face in the pixel. Fixes: - Render to 'spare page' has been enabled again. Because of the strict separation of Render and UI, but especially because a 'render result' now can consist of unlimited images, I've not made this a Render feature. Instead, the render-window itself stores the 'spare' image... I also had to change the convention for it a bit. Now, instead of having two "render buffers" (which was a render feature), the RenderWindow will store each previous frame on a re-render. This storing will only start after you've pressed 'Jkey' once, but then always will happen for as long the rendered image is same size as previously. For clarity, I've also renamed the window title, to 'previous frame'. - RenderWindow shows alpha again on Akey - Display of the Zvalues in ImageWindow has been tweaked. White now denotes closest, and the color range goes from camera clip-sta to clip-end. - Bugfix: on splitting/merging/duplicating windows, the 3D Previewrender was not always freed correctly, potentially causing crashes or memory leaks.
2006-02-07iImage based Vector BlurTon Roosendaal
After a couple of experiments with variable blur filters, I tried a more interesting, and who knows... original approach. :) First watch results here: http://www.blender.org/bf/rt0001_0030.avi http://www.blender.org/bf/hand0001_0060.avi These are the steps in producing such results: - In preprocess, the speed vectors to previous and next frame are calculated. Speed vectors are screen-aligned and in pixel size. - while rendering, these vectors get calculated per sample, and accumulated in the vector buffer checking for "minimum speed". (on start the vector buffer is initialized on max speed). - After render: - The entire image, all pixels, then is converted to quad polygons. - Also the z value of the pixels is assigned to the polygons - The vertices for the quads use averaged speed vectors (of the 4 corner faces), using a 'minimum but non-zero' speed rule. This minimal speed trick works very well to prevent 'tearing' apart when multiple faces move in different directions in a pixel, or to be able to separate moving pixels clearly from non-moving ones - So, now we have a sort of 'mask' of quad polygons. The previous steps guaranteed that this mask doesn't have antialias color info, and has speed vectors that ensure individual parts to move nicely without tearing effects. The Z allows multiple layers of moving masks. - Then, in temporal buffer, faces get tagged if they move or not - These tags then go to an anti-alias routine, which assigns alpha values to edge faces, based on the method we used in past to antialias bitmaps (still in our code, check the antialias.c in imbuf!) - finally, the tag buffer is used to tag which z values of the original image have to be included (to allow blur go behind stuff). - OK, now we're ready for accumulating! In a loop, all faces then get drawn (with zbuffer) with increasing influence of their speed vectors. The resulting image then is accumulated on top of the original with a decreasing weighting value. It sounds all quite complex... but the speed is still encouraging. Above images have 64 mblur steps, which takes about 1-3 seconds per frame. Usage notes: - Make sure the render-layer has passes 'Vector' and 'Z' on. - add in Compositor the VectorBlur node, and connect the image, Z and speed to the inputs. - The node allows to set amount of steps (10 steps = 10 forward, 10 back). and to set a maximum speed in pixels... to prevent extreme moving things to blur too wide.
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-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-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-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-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-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.
2005-12-04Orange branch feature; Material LayeringTon Roosendaal
(WIP, don't bugs for this in tracker yet please!) - New Panel "Layers" in Material buttons, allows to add unlimited amount of materials on top of each other. - Every Layer is actually just another Material, which gets rendered/shaded (including texture), and then added on top of previous layer with an operation like Mix, Add, Mult, etc. - Layers render fully independent, so bumpmaps are not passed on to next layers. - Per Layer you can set if it influences Diffuse, Specular or Alpha - If a Material returns alpha (like from texture), the alpha value is used for adding the layers too. - New texture "Map To" channel allows to have a texture work on a Layer - Each layer, including basis Material, can be turned on/off individually Notes: - at this moment, the full shading pass happens for each layer, including shadow, AO and raytraced mirror or transparency... - I had to remove old hacks from preview render, which corrected reflected normals for preview texturing. - still needs loadsa testing!
2005-12-02Extra texture channel input for Mist effect; "Global". This feeds theTon Roosendaal
global coordinate (from faces) to the sky texture color calculus, this to make textured mist a bit less transparent (was only view coordinate).
2005-11-14New zbuffer; added check for zero sized edges in filling in with newTon Roosendaal
span buffer. caused black stripes in render...
2005-11-14Strand render/zbuffering optimize recodeTon Roosendaal
I've been going over the zbuf.c code, which is indeed very ancient, with a load of old optimizing and redundant code in use. Added more 'modern' Span support, which fills per face two arrays with the scanline information in it. That way you can zbuffer a quad in one run as well. It was also exactly that code that's copied all over in zbuf.c For now, to prevent issues for the release, the 'render a quad in 1 run' is only in use for the strand render. Tests reveil a speedup of about 33%. Will work on this recode later... which would also result in making zbuf.c threadsafe. And: bugfix #3398 When using the new 'render emitter' for particles, the orco array for particles was accidentally used by mesh too.
2005-07-17Reverted to good line endingsAlexander Ewering