diff -ur -r  povray-3.6.1/source/parse.h  povray-3.6.1-ww/source/parse.h
---  povray-3.6.1/source/parse.h	2004-07-18 12:16:26.000000000 +0200
+++  povray-3.6.1-ww/source/parse.h	2004-07-24 18:39:22.000000000 +0200
@@ -597,6 +597,7 @@
   PATTERN_TOKEN,
   FACETS_TOKEN, 
   SLOPE_TOKEN, 
+  RADIAL_SLOPE_TOKEN,
   SOLID_TOKEN, 
   COORDS_TOKEN, 
   SIZE_TOKEN, 
diff -ur -r  povray-3.6.1/source/parstxtr.cpp  povray-3.6.1-ww/source/parstxtr.cpp
---  povray-3.6.1/source/parstxtr.cpp	2004-07-18 12:16:26.000000000 +0200
+++  povray-3.6.1-ww/source/parstxtr.cpp	2004-07-24 18:39:56.000000000 +0200
@@ -976,6 +976,11 @@
        EXIT
      END_CASE
 
+     CASE (RADIAL_SLOPE_TOKEN)
+       New->Type = RADIAL_SLOPE_PATTERN;
+       EXIT
+     END_CASE
+
      CASE (CRACKLE_TOKEN)
        New->Type = CRACKLE_PATTERN;
        New->Vals.Crackle.IsSolid = 0;
diff -ur -r  povray-3.6.1/source/pattern.cpp  povray-3.6.1-ww/source/pattern.cpp
---  povray-3.6.1/source/pattern.cpp	2004-07-18 12:16:26.000000000 +0200
+++  povray-3.6.1-ww/source/pattern.cpp	2004-07-24 18:42:59.000000000 +0200
@@ -111,6 +111,7 @@
 static DBL radial_pattern (VECTOR EPoint);
 static DBL ripples_pattern (VECTOR EPoint, TPATTERN *TPat);
 static DBL slope_pattern (VECTOR EPoint, TPATTERN *TPat, INTERSECTION *Intersection);
+static DBL radial_slope_pattern (VECTOR EPoint, TPATTERN *TPat, INTERSECTION *Intersection);
 static DBL spiral1_pattern (VECTOR EPoint, TPATTERN *TPat);
 static DBL spiral2_pattern (VECTOR EPoint, TPATTERN *TPat);
 static DBL spherical_pattern (VECTOR EPoint);
@@ -208,6 +209,7 @@
 		case DENSITY_FILE_PATTERN:value = density_pattern    (EPoint, TPat);   break;
 		case IMAGE_PATTERN:       value = image_pattern      (EPoint, TPat);   break;
 		case SLOPE_PATTERN:       value = slope_pattern      (EPoint, TPat, Isection); break;
+		case RADIAL_SLOPE_PATTERN:value = radial_slope_pattern(EPoint, TPat, Isection); break;
 		case PIGMENT_PATTERN:     value = pigment_pattern    (EPoint, TPat, Isection);   break;
 		case OBJECT_PATTERN:      value = object_pattern     (EPoint, TPat);   break;
 
@@ -3493,6 +3495,73 @@
 }
 
 
+/*****************************************************************************
+*
+* FUNCTION
+*
+*   radial_slope_pattern
+*
+* INPUT
+*
+*   EPoint -- The point in 3d space at which the pattern
+*             is evaluated.
+*   TPat   -- Texture pattern struct
+*   Intersection - intersection struct
+*
+* OUTPUT
+*
+* RETURNS
+*
+*   DBL value in the range 0.0 to 1.0, 0.0 if normal is NULL
+*
+* AUTHOR
+*
+*   Wolfgang Wieser
+*
+* DESCRIPTION   :
+*
+*   calculates the surface slope from surface normal vector just as normal 
+*   slope_pattern but uses "spherical normal vector", i.e. uses the 
+*   pattern evaluation point (EPoint) instead of the user-specified 
+*   slope vector. 
+*
+* CHANGES
+*
+******************************************************************************/
+
+static DBL radial_slope_pattern (VECTOR EPoint, TPATTERN *TPat, INTERSECTION *Isection)
+{
+  DBL value, value1, value2;
+
+  if (Isection == NULL) return 0.0; /* just in case ... */
+
+  /* Need a normalized version of the evaulation point: */
+  VECTOR EP_norm;
+  VNormalize(EP_norm,EPoint);
+  /* Calculate projection of slope onto normal vector */
+  VDot(value1, Isection->PNormal, EP_norm);
+
+  /* Clamp to 1.0. */
+  /* should never be necessary since both vectors are normalized */
+  if      (value1 >  1.0) value1 =  1.0;
+  else if (value1 < -1.0) value1 = -1.0;
+
+  value1 = asin(value1) / M_PI * 2.0;
+  value1 = (value1 + 1.0) * 0.5;        /* normalize to [0..1] interval */
+
+  /* Clamp to 1.0. */
+  /*if ( value1 == 1.0 )
+  {
+    value1= value1- EPSILON;
+  }
+  else
+  {  
+    value1 = (value1 < 0.0) ? 1.0 + fmod(value1, 1.0) : fmod(value1, 1.0);
+  }*/   
+  return value1; /* no altitude defined */
+}
+
+
 /*****************************************************************************
 *
 * FUNCTION
diff -ur -r  povray-3.6.1/source/pattern.h  povray-3.6.1-ww/source/pattern.h
---  povray-3.6.1/source/pattern.h	2004-07-18 12:16:26.000000000 +0200
+++  povray-3.6.1-ww/source/pattern.h	2004-07-24 18:43:20.000000000 +0200
@@ -111,6 +111,7 @@
   DENSITY_FILE_PATTERN,
   FUNCTION_PATTERN, 
   SLOPE_PATTERN,
+  RADIAL_SLOPE_PATTERN,
   PIGMENT_PATTERN,
   IMAGE_PATTERN
 };
diff -ur -r  povray-3.6.1/source/tokenize.cpp  povray-3.6.1-ww/source/tokenize.cpp
---  povray-3.6.1/source/tokenize.cpp	2004-07-18 12:16:27.000000000 +0200
+++  povray-3.6.1-ww/source/tokenize.cpp	2004-07-24 18:44:06.000000000 +0200
@@ -526,6 +526,7 @@
   {QUICK_COLOUR_TOKEN, "quick_colour"},
   {QUILTED_TOKEN, "quilted"},
   {RADIAL_TOKEN, "radial"},
+  {RADIAL_SLOPE_TOKEN,"radial_slope"},
   {RADIANS_TOKEN, "radians"},
   {RADIOSITY_TOKEN, "radiosity" },
   {RADIUS_TOKEN, "radius"},

