Age | Commit message (Collapse) | Author |
|
adding new windowmanager module, and the first bits of new editors
module.
|
|
=========
- Fix crash in particle transform with the particle system not editable.
- Particle child distribution and caching is now multithreaded.
- Child particles now have a separate Render Amount next to the existing
Amount. The render amount particles are now only distributed and cached
at render time, which should make editing with child particles faster.
- Two new options for diffuse strand shading:
- Surface Diffuse: computes the strand normal taking the normal at
the surface into account.
- Blending Distance: the distance in Blender units over which to
blend in the normal at the surface.
- Special strand rendering for more memory efficient and faster hair and
grass. This is a work in progress, and has a number of known issues,
don't report bugs to me for this feature yet.
More info:
http://www.blender.org/development/current-projects/changes-since-244/particles/
|
|
were not always set correct.
|
|
it now sets the viewport exactly the same as if rendering.
|
|
renderwin.c - stamp info in openGL render
|
|
Original bug:
https://projects.blender.org/tracker/?group_id=9&atid=127&func=detail&aid=3760
Code remove in revision 6654:
http://projects.blender.org/plugins/scmsvn/viewcvs.php/trunk/blender/source/blender/src/renderwin.c?root=bf-blender&r1=6491&r2=6654
and return in revision 6839 (without the point checking):
http://projects.blender.org/plugins/scmsvn/viewcvs.php/trunk/blender/source/blender/src/renderwin.c?root=bf-blender&r1=6835&r2=6839
|
|
Removing the ability to have the Preview Range affecting the Preview Renders (OpenGL renders) as it is unstable in certain cases. It was only a problem when rendering to movie-file formats with a preview range set greater than the normal range, as it would consume increasing amounts of memory for each frame rendered.
Preventing this from happening would have required too much disruption of the avi
writing code to be worthwhile.
|
|
2 Bugfixes:
* EKEY in Timeline changed start frame of Preview Range too. Reported by slikdigit
on IRC
* SKEY in Timeline also didn't work correct as it was changing the end frame.
New Feature:
* Now OGL preview-render obeys Preview-Range settings.
|
|
|
|
For "Render to Image window": On re-render, the 32 bits display buffer of
a RenderResult was not freed, so it looked as if the rendered image was
not changed.
|
|
- Jkey press without a render crashed
- UV FaceSelect, assign/view image, crashed all over... :)
|
|
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.
|
|
logical place than DNA_screen_types). SPACEICONMAX gets its value now through this enum, so it is not anymore easy to forget to update it correctly :)
|
|
From the tracker:
https://projects.blender.org/tracker/index.php?func=detail&aid=5018&group_id=9&atid=127
|
|
adds additional shortcuts to zoom on the render window, patch by Onur Yalazi (onuryalazi)
|
|
- It saves a file with indicated type on each change, with number
appended denoting the current frame (like ANIM saving).
- Output filename button supports relative paths ("//")
- Shows optional preview image too
- For now, added a print on each file save as feedback
To make this option work nicely, changed the BKE_makepicstring() function
to have less globals inside, so it is more generic. Todo: allow amount of
digits in filenames to be set (to support files like tmp_123456.jpg)
|
|
Re-replaced glFinish back to glFlush, should fix display updates?
|
|
- readfile.c, version patch for new toolsettings used a malloc, using
unitialized variables
- despgraph, another malloc changed to calloc
- timer code for render ESC: unitialized variable in struct
|
|
create buffer overflows in string drawing
- removed static variable from renderwin.c. No fix, just nicer code.
|
|
ESC for OpenGL render (in anim) was hanging, so a 2nd anim render always
returned immediately.
Own bug collection: the SHIFT+NumPad-0 option didn't do an undo-push.
|
|
Blender!
Nevertheless, this case was fixable, so...
Bug: While rendering opengl anims, closing the output window crashes
blender.
|
|
reserved for field and blur steps, but never used or printed.
|
|
- when renderwin exists, but not used for render, the ESC timer check still
could return ESC event, due to missing flag clearing.
(For example in sequencer, a scene strip did not update on frame advance)
- option 'single layer' set in combination with render "Do Sequence" didn't
free the pushed layers.
|
|
Sequencer:
Removing feature that allowed live updates of render progress while using
scene strips. In 2.41 and older this also happens invisible, and ESC from
it works now anyway.
Two reasons:
- it is quite annoying, especially on quit renders
- new 'render to window' conflicts too much with the sequencer window
option that shows previews (in code as well as functional!)
|
|
RenderWindow redraws (after rendering) was still using GL_FLOAT. Replaced
it with the faster glaDrawPixelsSafe_to32() call. Stupid ATIs! :)
|
|
event on compositing changes.
|
|
More Sequence render fixes:
- on load of .blend file, with Sequencer invoking a sequence render, the
header window matrix was not set, giving "Insane icon" prints
- option "Do Sequence" had no re-display call in end
|
|
ESC wasn't supported for sequence-based rendering yet.
Solved it with correctly initializing the sequence render with all
render callbacks, including render updates (which it didn't do yet).
Cleanup:
- Bug in ghostwinlay code: the get_mbut() function reads from the window
struct if a mouse is pressed. However, when you press the mouse in the
sequencer, which causes a render, this value was hanging because then
the active window was a render window.
- The new render display options (image window) didn't work for sequence
render OK. There was a recursion even, because a sequence draw command
calls a render, which in turn now calls redraws.
|
|
rendering now is full 32 bits. This gives drawing issues in some cards,
like ATIs.
Copied the function used for renderwindow to glutil.c, and used now in the
image window.
|
|
|
|
Next to the "DispWindow" there are now two new choices:
- Display render output to Image Editor
- Display render output to Screen-sized Image Editor
Both options won't open a 2nd window anymore, which makes work quite more
smooth even, especially because 'focus' isn't lost. Further it fits in the
'single window UI' paradigm of Blender. Should have been done 10 years ago!
Lastly it might bypass issues with X11... having 2 windows with opengl
context is not always stable in Linux.
This option uses an identical trick as for the Compositor viewer, using an
Image block with a fixed name ("Render Result").
The flow, when invoking a Render, goes as follows:
- first it checks if there's an Image Editor visible displaying the "Render
Result", if so then it uses that area-window.
(Use this option for dual-monitor setups for example, a render will always
go to the same location then)
- else it checks if there's an Image Editor open in general, it then
assigns that window the "Render Result" Image.
- else: it searches for the largest Area in the screen, and turns that into
a temporal Image Editor showing render output.
After a render, an ESC will push back the former view, if the Area type has
changed.
Same rules apply for the "Full Screen" option. Here an ESC will always go
back to the regular Screen, and restore Area type if required.
While rendering, the queue for the renderwindow isn't handled yet, so you can
not zoom (nor get full redraws), as for the regular render window.
Existing conflicts:
- in FaceSelect mode, the Image editor enforces to display the face texture
after rendering again.
- when using an Image window for compositing, you'll lose the Viewer output
on a render.
Implementation note:
While rendering updates, nothing is drawn in frontbuffer anymore. That's
good news for b0rked OpenGL drivers (and faster). However, for the few
OpenGL cards that don't do a "swap copy" but a "swap exchange" you get
issues... has to be worked on. I'm afraid we have to drop frontbuffer
drawing altogether.
Other fixes:
- Hotkeys NumPad 1, 2, 4, 8 will set zoom levels (was half coded only?)
Use SHIFT to zoom out (smaller).
- Rendering Tile updates still had draw errors on edges of tiles, in OSA
only. (Caused by commit 4 days ago)
|
|
Changing from ITIMER_VIRTUAL to ITIMER_REAL solved the issue for all
who tested it (Hos, pidhash and me, at least). Ton said to commit it so
more people can test, but other solutions may still be investigated.
The change is only for POSIX systems (so Windows code was not touched).
|
|
are already defined locally, probably does not work fully yet.
Added extra 'threads' parameter as requested by Lynx3d.
Optimized drawing of rendered tiles, so that the entire image doesn't have
to be redrawn every time a tile is complete.
The blender code that handles this part was not yet complete and could only
draw (sets of) scanlines. I extended the renderwin_progress() function in
renderwin.c to handle a given subrectangle.
This code needs review!
For the limited test I did it seems to work at least...
|
|
- OpenGL render didn't display the render buffer
- OpenGL anim render always exported to movie, now it supports formats like
normal renders.
|
|
it keeps storing a previous buffer for as long you don't render showing
this previous buffer.
If you render showing the previous buffer, it stores the current render.
To make this more clear, the window title shows "previous" when it shows
the stored copy.
|
|
But seems to work sofar anyway, composit nodes should work as well.
|
|
only images input in compositor. Currently still renders in the scene's
own resolution. It also doesn't show scanline/tile updates yet while
rendering.
|
|
for input were 32 bits.
|
|
- Renderwin still used a thread-unsafe malloc, in the header text print
- Setting clipping flags in vertices for parts required a mutex lock after
all... I thought it would go fine, but noticed on renders with small
amounts of faces that sometimes faces disappear from a render.
(was doing movie credits, so all faces are visible! Otherwise it would
have hardly been noticable...)
|
|
- 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...)
|
|
a well supported feature for glDrawPixels(), especially on ATIs crashes
happen with it irregularly. (note; drawing float is a regular opengl 1.0
feature...).
Now all scanline/part updates in renderwindow is converted to 32 bits
before drawing, also the in the UV Image window only 32 bits RGBA is drawn.
What is still float: drawing the final image after render in renderwindow,
and drawing the Z or Alpha in renderwindow and UV image.
Of course we need to test this first. :) Will await reports...
|
|
now for OSX though... that's where we can verify if the irregular crashes
will stop (ATI issue, nvidia seems to be OK)
If ATI users for other platforms want to check; just extend the two
#ifdefs I added for frontbuffer drawing. Note; the syntax then becomes
#if defined(__APPLE__) || defined(_YOUR_PLATFORM_)
|
|
option to re-render that specific node. Also works for nodes using other
scenes.
|
|
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)
|
|
updates are allowed to draw when a part is within a scanline rendering
loop. Might solve threads issues with opengl...
|
|
seems to be a reason for opengl crashes with thread render?
|
|
In Orange we've been fighting the past weeks with memory usage a lot...
at the moment incredible huge scenes are being rendered, with multiple
layers and all compositing, stressing limits of memory a lot.
I had hoped that less frequently used blocks would be swapped away
nicely, so fragmented memory could survive. Unfortunately (in OSX) the
malloc range is limited to 2 GB only (upped half of address space).
Other OS's have a limit too, but typically larger afaik.
Now here's mmap to the rescue! It has a very nice feature to map to
a virtual (non existing) file, allowing to allocate disk-mapped memory
on the fly. For as long there's real memory it works nearly as fast as
a regular malloc, and when you go to the swap boundary, it knows nicely
what to swap first.
The upcoming commit will use mmap for all large memory blocks, like
the composit stack, render layers, lamp buffers and images. Tested here
on my 1 GB system, and compositing huge images with a total of 2.5 gig
still works acceptable here. :)
http://www.blender.org/bf/memory.jpg
This is a silly composit test, using 64 MB images with a load of nodes.
Check the header print... the (2323.33M) is the mmap disk-cache in use.
BTW: note that is still limited to the virtual address space of 4 GB.
The new call is:
MEM_mapalloc()
Per definition, mmap() returns zero'ed memory, so a calloc isn't required.
For Windows there's no mmap() available, but I'm pretty sure there's an
equivalent. Windows gurus here are invited to insert that here in code! At
the moment it's nicely ifdeffed, so for Windows the mmap defaults to a
regular alloc.
|
|
- 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.
|
|
using 1 line per part rendered. Might go back to 1 line again, but at this
moment I need the logs for debugging.
Same prints are active now for UI rendering. Just temporal :)
|
|
keys with IKEY in buttons to not work.
- Crash in opengl while rendering was caused by the fact that scanline
updates are drawn in the main thread, whilst the actual render thread
then can already be doing different stuff.
Especially with many layers & passes it's getting confusing easily :)
Convention now is that scanline render updates only happen while the
thread is looping over scanlines. As soon as it reached the last, no
drawing happens, not even to update the last segment.
This isnt a problen, since any finished tile is drawn again entirely.
|