[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29497] branches/render25/source/blender/ render/intern/raytrace/rayobject.cpp: Render Branch: force inlining of auxiliary functions for ray-triangle/quad
Brecht Van Lommel
brecht at blender.org
Wed Jun 16 21:27:29 CEST 2010
Revision: 29497
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29497
Author: blendix
Date: 2010-06-16 21:27:29 +0200 (Wed, 16 Jun 2010)
Log Message:
-----------
Render Branch: force inlining of auxiliary functions for ray-triangle/quad
intersection, helps a few percentages.
Modified Paths:
--------------
branches/render25/source/blender/render/intern/raytrace/rayobject.cpp
Modified: branches/render25/source/blender/render/intern/raytrace/rayobject.cpp
===================================================================
--- branches/render25/source/blender/render/intern/raytrace/rayobject.cpp 2010-06-16 19:12:55 UTC (rev 29496)
+++ branches/render25/source/blender/render/intern/raytrace/rayobject.cpp 2010-06-16 19:27:29 UTC (rev 29497)
@@ -48,7 +48,7 @@
because function is too long. Since this is code that is called billions
of times we really do want to inline. */
-static RayObject* rayface_from_coords(RayFace *rayface, void *ob, void *face, float *v1, float *v2, float *v3, float *v4)
+MALWAYS_INLINE RayObject* rayface_from_coords(RayFace *rayface, void *ob, void *face, float *v1, float *v2, float *v3, float *v4)
{
rayface->ob = ob;
rayface->face = face;
@@ -70,7 +70,7 @@
return RE_rayobject_unalignRayFace(rayface);
}
-static void rayface_from_vlak(RayFace *rayface, ObjectInstanceRen *obi, VlakRen *vlr)
+MALWAYS_INLINE void rayface_from_vlak(RayFace *rayface, ObjectInstanceRen *obi, VlakRen *vlr)
{
if(obi->transform_primitives)
{
@@ -102,7 +102,7 @@
/* Checks for ignoring faces or materials */
-static int vlr_check_intersect(Isect *is, ObjectInstanceRen *obi, VlakRen *vlr)
+MALWAYS_INLINE int vlr_check_intersect(Isect *is, ObjectInstanceRen *obi, VlakRen *vlr)
{
/* for baking selected to active non-traceable materials might still
* be in the raytree */
@@ -116,7 +116,7 @@
return (is->lay & obi->lay);
}
-static int vlr_check_intersect_solid(Isect *is, ObjectInstanceRen* obi, VlakRen *vlr)
+MALWAYS_INLINE int vlr_check_intersect_solid(Isect *is, ObjectInstanceRen* obi, VlakRen *vlr)
{
/* solid material types only */
if (vlr->mat->material_type == MA_TYPE_SURFACE)
@@ -125,14 +125,14 @@
return 0;
}
-static int vlr_check_bake(Isect *is, ObjectInstanceRen* obi, VlakRen *vlr)
+MALWAYS_INLINE int vlr_check_bake(Isect *is, ObjectInstanceRen* obi, VlakRen *vlr)
{
return (obi->obr->ob != is->userdata);
}
/* Ray Triangle/Quad Intersection */
-static int isec_tri_quad(float start[3], float dir[3], RayFace *face, float uv[2], float *lambda)
+MALWAYS_INLINE int isec_tri_quad(float start[3], float dir[3], RayFace *face, float uv[2], float *lambda)
{
float co1[3], co2[3], co3[3], co4[3];
float t0[3], t1[3], x[3], r[3], m[3], u, v, divdet, det1, l;
@@ -215,7 +215,7 @@
/* Simpler yes/no Ray Triangle/Quad Intersection */
-static int isec_tri_quad_neighbour(float start[3], float dir[3], RayFace *face)
+MALWAYS_INLINE int isec_tri_quad_neighbour(float start[3], float dir[3], RayFace *face)
{
float co1[3], co2[3], co3[3], co4[3];
float t0[3], t1[3], x[3], r[3], m[3], u, v, divdet, det1;
@@ -282,7 +282,7 @@
/* RayFace intersection with checks and neighbour verifaction included,
Isect is modified if the face is hit. */
-static int intersect_rayface(RayObject *hit_obj, RayFace *face, Isect *is)
+MALWAYS_INLINE int intersect_rayface(RayObject *hit_obj, RayFace *face, Isect *is)
{
float dist, uv[2];
int ok= 0;
More information about the Bf-blender-cvs
mailing list