Bug fix #1988, ray-transparency render.

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.
This commit is contained in:
2004-12-09 12:06:37 +00:00
parent d8797f36f7
commit eae5d39899
4 changed files with 72 additions and 60 deletions

View File

@@ -967,8 +967,12 @@ void BIF_do_render(int anim)
/* if start render in 3d win, use layer from window (e.g also local view) */
if(curarea && curarea->spacetype==SPACE_VIEW3D) {
int lay= G.scene->lay;
G.scene->lay= G.vd->lay;
if(G.vd->lay & 0xFF000000) // localview
G.scene->lay |= G.vd->lay;
else G.scene->lay= G.vd->lay;
do_render(NULL, anim, 0);
G.scene->lay= lay;
}
else do_render(NULL, anim, 0);