Backbuffer selection codes issue on OSX.
On some h/w configs, with "1000s of colors set", the drivers seem to round
colors up or down... whilst until now rounding always was just truncating
bits. This gives errors in writing color codes and reading it back.
The c code only changed for OSX. For other OS's and HW this test could be
done as well.
It appeared that the method as used in unified render for "render all sub-
pixels" isn't very well resistant to having large amounts of faces in a
single pixel. The bug file had about 16x70x2 faces per pixel... causing
tremendous slowdown and even wrong render.
I've disabled the option (was coded by Nzc in NaN days) and made it
sampling in the main render loop. Goes much faster, error free. Only loss
is in that it doesnt use superiour subsamples for gauss anymore. Here the
normal render performs slightly better. Not a real issue though. Hard to
notice.
Slightly altered rules for calculating vertexnormals. By only averaging
face normals from faces actually set 'smooth', the result looks much more
nice (for example on a cylinder with caps solid). Vertex normals not being
used by smooth faces are set to the face normal direction.
Shows both in editor as rendering.
This method is now unsupported. The original intent appears to
return the first BPoint of an Ipo curve. However, BPoint Ipo curves
are not implemented and the first point therefore never existed.
The segfault was from an unchecked input parameter.
Calling this method now always throws a NotImplemented exception.
Separate in Mesh editmode, selectmode 'face', and with a selection that
used to be in vertex mode a full select (like selecting the 2 opposing
faces in a cube) caused crash. There was still no good face-select
awareness there... tsk! :)
Actually a 1 liner fix, added displist re-make event for wave objects
being used to vertexparent objects to. Will of course be much better
solved with the dep graph!
- Add UV Sphere now aligns with view, as do all primitives
- Small drawing error in edges between blender areas (black lines were 2
pixels too short)
- Replaced the heuristics in opening sublevel menus, to be less frustrating.
It now keeps sublevel open while mouse moves within the triangle defined
by original mouse location (before moving) and the closest vertical edge
of the new sub menu. Works nice for toolbox and pulldowns.
Particles added to mesh being deformed with Armature crashes.
Bug introduced with 2.33, particle collisions... leon added some fancy
updates for actions and armature displists there, which are highly
disputable. I left it in, because I didn't see it was actually new.
Note: particles added while updating mesh with armatures is not supported,
it will shoot particles from original location.
What does work, is static particles.
frame-sliding (LMB) in action, nla, sound and ipo window went into very
tight while loop, causing cpu to choke. Added nice idle.
Bug fix, found self while testing:
- relative.blend, editmode
- delete part, exit editmode
- enter editmode, undo twice, exit editmode -> crash
The trick to copy 'old' locations of vertices to keys isnt undo-resistant
yet. This fix at least doesnt crash, but copying doesnt work when undo-ing
back to previous editmode session (indices just differ from current mesh...)
When editing Meshes with vertex keys (RVKs), the undo stack isn't
updated correctly, causing a loss of the situation when entering
editmode after changing active key, and doing undo immediate after.
This due to an 'optimizer' in the undo code that tried to prevent undos
pushed on identical situations (e.g. pressing TAB multiple times).
Decided to remove that convention, the annoyance of having possible
multiple undos in a row isn't worth solving it by potential losses.
Combination of:
- render movie
- with border set
- and "crop" set
Crashed.
Was due to feeding movie initialize code wrong frame sizes. Another oldie!
Also found that crop+border+parts doesnt work. This now is prevented with
warning and return.
When the render output directory doesn't exist (on windows) the BLI_recurdir_fileops() function
tries to create a directory with no name. Added check if a name is specified..
that could popup error() boxes. These dont work then, and need to be
disabled by keeping R.flag on R_RENDERING
This is a half fix for a report Rob H works on. Will wait for his test.
Hiding window (Apple-H) caused the modifier to hang when reopened.
Added 1 line that re-reads modifier on "Inputchange" event, which only
is when you switch focus from one app to another.
Might solve more issues reported with 'hanging' keys.
- Dupli-Frames objects didn't render correct with Motion Blur (they moved!)
- VertexKey on Bezier paths didn't animate the 'twist' rotation. This did
work for Nurbs paths.
Plus; removed Nabla slider from Stucci, it doesn't work for that texture.
- Stucci now accepts it too (for normals and color)
Note; stucci doesn't return a single value, like marble or wood, that's
still so, to disable it coloring the "Col" Map input by default.
- Magic texture now accepts Colorband
Sequence editor crash when you delete Scenes which were used as a strip.
Related to that, file reading code didn't restore pointers for strips
correctly when you save with open "Meta" strip.
First bug 8 year old. Second 1 month. :)
When the Quicktime movie output path lacks any path indication, the movie is created in the
executable directory.
Also new, when the Quicktime output movie isn't created for some reason, the rendering will
stop and give an error message (in the console).
Raw fix for the drive letter issue with Quicktime/Windows filenames.
When a drive letter is missing in a filename, it'll use the drive where the executable is.
Fix might be useful for Yafray too, because the extern char bprogname[]; doesn't return
a full path when Blender is started from the console.
Rotated edges (seemingly on quads only) were not drawn even if
'Draw All Edges' is active.
Finally tracked the bug down to a typo in flag checks! Eeugh, was much
head scratching on this one! :)
- code wasn't edge-select aware yet
- the "Median" button now allows to move a "median" correctly around, also
to 0 or 1 in a single step
- missing undo push here.
It moves targa, bmp, iris and png loading so that were not opening
2 file handles for each file, and made them like the jpeg stuff.
Also cleaned up some minor other stuff.
Kent
Five fixes in this commit...
- the normals for nurbs surfaces still were calculated pointing wrong in some occasions
- recoded ray-transp rendering to accept normals pointing any direction; it just counts how many times it passes a "glass" layer, and flips normals appropriate then. This means rendering will go fine on models without manually setting the normals. You can also move a camera inside a 'glass' object.
- rendering of the inside part of glass now uses correct normal too... specularity happen on a solid glass inside now.
- And an inside reflected mirror ray will keep bouncing inside glass
Related to rendering localview: old convention to render localview, but with the lamps in the normal layers, has been restored.
Please note; render happens based on active window. You *only* get a localview or 'unlocked layer' render when that 3d window is active = mouse in window.
Appending objects with constraints expands links to objects (according
code) but doesn't give such objects a link to Scene.
Apprently, somewhere in NaN days, someone commented a call, which
already invoked comments... here's the full code + comments now:
/* give a base to loose objects */
give_base_to_objects(G.scene, &(G.main->object));
/* has been removed... erm, why? (ton) */
/* 20040907: looks like they are give base already in append_named_part(); -Nathan L */
/* 20041208: put back. It only linked direct, not indirect objects (ton) */
:-)
oops code, having pointers to ID structs that are invalid.
This solves at least it crashing... oops needs to be refreshed once :)
(occurred on testing complex files, with conversion from nurbs=>mesh)
Using ctrl+up/down in buttons window, didn't use a proper rescale of view
as already works for dragging window edges. Now the 'Full window' action
keeps size nicely.
patching versions for UI settings.
Currently four different levels of routines for .blend file reading exist;
/* interface level */
1) BIF_init() -> calls 3
2) BIF_read_file() -> calls 11, optional 4
3) BIF_read_homefile() -> calls 11 or 12, and then 4
4) init_userdef_file()
/* kernel level */
11) BKE_read_file() -> calls 21, and then 14
12) BKE_read_file_from_memory() -> calls 22, and then 14
13) BKE_read_file_from_memfile() -> calls 23, and then 14
14) setup_app_data()
/* loader module level */
21) BLO_read_from_file() -> calls 24
22) BLO_read_from_memory() -> calls 24
23) BLO_read_from_memfile() -> calls 24
/* loader module, internal */
24) blo_read_file_internal()
Note:
- BIF_read_homefile() has additional UI initialize calls, like windows fullscreen and executing commandline options
- Reading from memory (12) only happens for the compiled-in .B.blend
- The "memfile" here is a name I gave to the undo "file" structure. Which is constructed out of memory chunks with basic compression features.
- the kernel function setup_app_data() sets globals like "current screen" and "current scene".
So far, so good. The levels as mentioned here clearly distinguish UI from kernel, and should enable for example game loading (runtime) or background (no UI) loading. In the past years however, 'bad level' dependencies were added, and especially the patches for 'file versions' were added in too many places. The latter is evidently a result of the problem that the "UserDef" struct cannot be initialized/patched if there's not a need for a UI.
Here's how the flow goes in four different cases:
----- Starting up Blender, in foreground with UI --------------------
- creator/creator.c, main() -> calls 1
- If the commandline contains a filename, it calls 11
----- Starting up Blender, in background without UI --------------------
- creator/creator.c, main() -> calls 11 if the commandline has a filename
Note: no Userdef is read, nor initialized. Please note that this was already an existing problem for using Yafray, not setting proper file paths in background mode. The Yafray paths don't belong in the User menu.
----- Starting up Blender as a runtime executable --------------------
This only has calls to 22
----- Loading a file from within the UI (with F1, CTRL+O, using pulldowns) -----
Only calls allowed to 2. It detects if a UserDef has been read too, and in that case the init_userdef_file() will be executed.
Hope this is understandable :)
-Ton-