From 1230f386f2953f944fb41832c1d08277f37a597f Mon Sep 17 00:00:00 2001
From: "Gregory J. Ward" <gregoryjward@gmail.com>
Date: Fri, 13 Dec 2024 19:05:03 +0000
Subject: [PATCH] perf: Minor efficiency improvement for -bv0

---
 src/rt/m_brdf.c | 10 +++++-----
 src/rt/m_bsdf.c | 18 ++++++++----------
 2 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/src/rt/m_brdf.c b/src/rt/m_brdf.c
index 310fa8c9..475feb2f 100644
--- a/src/rt/m_brdf.c
+++ b/src/rt/m_brdf.c
@@ -1,5 +1,5 @@
 #ifndef lint
-static const char	RCSid[] = "$Id: m_brdf.c,v 2.42 2024/12/05 19:23:43 greg Exp $";
+static const char	RCSid[] = "$Id: m_brdf.c,v 2.43 2024/12/13 19:05:03 greg Exp $";
 #endif
 /*
  *  Shading for materials with arbitrary BRDF's
@@ -346,10 +346,6 @@ m_brdf2(			/* color a ray that hit a BRDF material */
 						/* always a shadow */
 	if (r->crtype & SHADOW)
 		return(1);
-						/* check arguments */
-	if ((m->oargs.nsargs < (hasdata(m->otype)?4:2)) | (m->oargs.nfargs <
-			((m->otype==MAT_TFUNC)|(m->otype==MAT_TDATA)?6:4)))
-		objerror(m, USER, "bad # arguments");
 						/* check for back side */
 	if (r->rod < 0.0) {
 		if (!backvis) {
@@ -360,6 +356,10 @@ m_brdf2(			/* color a ray that hit a BRDF material */
 		flipsurface(r);			/* reorient if backvis */
 	} else
 		raytexture(r, m->omod);
+						/* check arguments */
+	if ((m->oargs.nsargs < (hasdata(m->otype)?4:2)) | (m->oargs.nfargs <
+			((m->otype==MAT_TFUNC)|(m->otype==MAT_TDATA)?6:4)))
+		objerror(m, USER, "bad # arguments");
 
 	nd.mp = m;
 	nd.pr = r;
diff --git a/src/rt/m_bsdf.c b/src/rt/m_bsdf.c
index 2a13f247..0a6e33dc 100644
--- a/src/rt/m_bsdf.c
+++ b/src/rt/m_bsdf.c
@@ -1,5 +1,5 @@
 #ifndef lint
-static const char RCSid[] = "$Id: m_bsdf.c,v 2.74 2024/09/18 19:52:35 greg Exp $";
+static const char RCSid[] = "$Id: m_bsdf.c,v 2.75 2024/12/13 19:05:03 greg Exp $";
 #endif
 /*
  *  Shading for materials with BSDFs taken from XML data files
@@ -626,19 +626,22 @@ sample_sdf(BSDFDAT *ndp, int sflags)
 int
 m_bsdf(OBJREC *m, RAY *r)
 {
-	int	hasthick = (m->otype == MAT_BSDF);
-	int	hitfront;
+	const int	hasthick = (m->otype == MAT_BSDF);
+	const int	hitfront = (r->rod > 0);
 	SCOLOR	sctmp;
 	SDError	ec;
 	FVECT	upvec, vtmp;
 	MFUNC	*mf;
 	BSDFDAT	nd;
+						/* check backface visibility */
+	if (!hitfront & !backvis) {
+		raytrans(r);
+		return(1);
+	}
 						/* check arguments */
 	if ((m->oargs.nsargs < hasthick+5) | (m->oargs.nfargs > 9) |
 				(m->oargs.nfargs % 3))
 		objerror(m, USER, "bad # arguments");
-						/* record surface struck */
-	hitfront = (r->rod > 0);
 						/* load cal file */
 	mf = hasthick	? getfunc(m, 5, 0x1d, 1)
 			: getfunc(m, 4, 0xe, 1) ;
@@ -648,11 +651,6 @@ m_bsdf(OBJREC *m, RAY *r)
 		nd.thick = evalue(mf->ep[0]);
 		if ((-FTINY <= nd.thick) & (nd.thick <= FTINY))
 			nd.thick = 0;
-	}
-						/* check backface visibility */
-	if (!hitfront & !backvis) {
-		raytrans(r);
-		return(1);
 	}
 						/* check other rays to pass */
 	if (nd.thick != 0 && (r->crtype & SHADOW ||