(Message inbox:574)
From mlschroe@immd4.informatik.uni-erlangen.de Tue Aug  9 09:43:03 1994
Received: from tbird.cc.iastate.edu (tbird.cc.iastate.edu [129.186.140.11]) by packrat.vorpal.com (8.6.9/8.3) with ESMTP id JAA20542; Tue, 9 Aug 1994 09:43:00 -0500
Received: from faui45.informatik.uni-erlangen.de (faui45.informatik.uni-erlangen.de [131.188.2.45]) by tbird.cc.iastate.edu (8.6.5/8.6.5) with SMTP id JAA02728 for <explorer@vorpal.com>; Tue, 9 Aug 1994 09:42:47 -0500
Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP;
	id AA08259 (5.65c-6/7.3w-FAU); Tue, 9 Aug 1994 16:41:21 +0200
Received: by immd4.informatik.uni-erlangen.de;
	id AA21277 (5.65c-6/7.3m-FAU); Tue, 9 Aug 1994 16:41:20 +0200
From: "Michael Schroeder (Inf4 - hiwi)" <mlschroe@immd4.informatik.uni-erlangen.de>
Message-Id: <199408091441.AA21277@faui43.informatik.uni-erlangen.de>
Subject: Re: rayshade-4.1.0.tar.gz
To: "Michael Graff" <explorer@vorpal.com>
Date: Tue, 9 Aug 94 16:41:19 DST
In-Reply-To: <199408090928.EAA29572@packrat.vorpal.com>; from "Michael Graff" at Aug 9, 94 4:28 am
X-Mailer: ELM [version 2.3 PL11]

> This is an unofficial release of Rayshade, called 4.1 because of the
> new features included.  I expect there will be problems and such, and
> welcome patches and suggestions.
> 
> I have placed the file on 
> 	ftp://tbird.cc.iastate.edu/pub/rayshade/rayshade-4.1.0.tar.gz
> so grab it and make comments.  There is a lot of cleaning up to do yet,
> which I hope to do over the next few weeks between working and preparing
> for classes this semester.
> 
> Comments, bug fixes, suggestions, flames, and hard drives welcome.  :)

I just checked "ftp.uni-erlangen.de:/pub/graphics/rayshade" and
noticed that some of my patches were missing.
I looked in the ftp tree and realized that there were two rayshade
directories: pub/graphics/rayshade and /pub/graphics/graphics/rayshade
I copied my patches into the graphics/graphics directory :(

I moved graphics/rayshade to graphics/rayshade.xx and made a
symlink from graphics/graphics/rayshade, so the next time
you will be in the right directory. Sorry.

Anyway some points about 4.1.0:

1) You should apply UNAPPLIED/shadowbug. Don't distribute a buggy
   version. (The first hunk will reject - it is already applied
   in 4.1.0)

2) Please apply accellenh:
   On some platforms (e.g. mot88) it is much faster to do float
   multiplication than division. Thus if you have to divide
   a vektor by a scalar it is better to invert the scalar and do
   multiplications.

3) lightenh allows lightsources that falloff with the distance to the
   object squared. If you are interested, ftp it.

Michael.

---------------------------------------------------------------
Michael Schroeder    mlschroe@faui43.informatik.uni-erlangen.de
main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}

accellenh:
*** libray/libcommon/transform.c.orig	Tue Aug  9 09:55:18 1994
--- libray/libcommon/transform.c	Tue Aug  9 16:02:21 1994
***************
*** 254,260 ****
  {
  	RSMatrix ttmp;
  	int i;
! 	Float d;
  	extern int yylineno;
  
  	ttmp.matrix[0][0] = trans->matrix[1][1]*trans->matrix[2][2] -
--- 254,260 ----
  {
  	RSMatrix ttmp;
  	int i;
! 	Float d, invd;
  	extern int yylineno;
  
  	ttmp.matrix[0][0] = trans->matrix[1][1]*trans->matrix[2][2] -
***************
*** 285,302 ****
  	if (fabs(d) < EPSILON*EPSILON)
  		RLerror(RL_PANIC, "Singular matrix.\n",yylineno);
  
! 	ttmp.matrix[0][0] /= d;
! 	ttmp.matrix[0][2] /= d;
! 	ttmp.matrix[1][1] /= d;
! 	ttmp.matrix[2][0] /= d;
! 	ttmp.matrix[2][2] /= d;
! 
! 	d = -d;
! 
! 	ttmp.matrix[0][1] /= d;
! 	ttmp.matrix[1][0] /= d;
! 	ttmp.matrix[1][2] /= d;
! 	ttmp.matrix[2][1] /= d;
  
  	ttmp.translate.x = -(ttmp.matrix[0][0]*trans->translate.x +
  			     ttmp.matrix[1][0]*trans->translate.y +
--- 285,303 ----
  	if (fabs(d) < EPSILON*EPSILON)
  		RLerror(RL_PANIC, "Singular matrix.\n",yylineno);
  
!         invd = 1 / d;
! 	ttmp.matrix[0][0] *= invd;
! 	ttmp.matrix[0][2] *= invd;
! 	ttmp.matrix[1][1] *= invd;
! 	ttmp.matrix[2][0] *= invd;
! 	ttmp.matrix[2][2] *= invd;
! 
! 	invd = -invd;
! 
! 	ttmp.matrix[0][1] *= invd;
! 	ttmp.matrix[1][0] *= invd;
! 	ttmp.matrix[1][2] *= invd;
! 	ttmp.matrix[2][1] *= invd;
  
  	ttmp.translate.x = -(ttmp.matrix[0][0]*trans->translate.x +
  			     ttmp.matrix[1][0]*trans->translate.y +
*** libray/libcommon/vecmath.c.orig	Tue Aug  9 09:55:27 1994
--- libray/libcommon/vecmath.c	Tue Aug  9 16:02:21 1994
***************
*** 41,54 ****
  VecNormalize(a)
  register Vector *a;
  {
! 	Float d;
  
  	d = sqrt(a->x*a->x + a->y*a->y + a->z*a->z);
  	if (equal(d, 0.))
  		return 0.;
! 	a->x /= d;
! 	a->y /= d;
! 	a->z /= d;
  #ifdef CRAY
  	/*
  	 * The Cray Research Inc. math functional units don't work in the IEEE
--- 41,55 ----
  VecNormalize(a)
  register Vector *a;
  {
! 	Float d, invd;
  
  	d = sqrt(a->x*a->x + a->y*a->y + a->z*a->z);
  	if (equal(d, 0.))
  		return 0.;
! 	invd = 1.0 / d;
! 	a->x *= invd;
! 	a->y *= invd;
! 	a->z *= invd;
  #ifdef CRAY
  	/*
  	 * The Cray Research Inc. math functional units don't work in the IEEE

