Author: ArcRiley
Date: 2008-05-20 00:18:58 -0400 (Tue, 20 May 2008)
New Revision: 1283

Modified:
   trunk/pysoy/examples/CubeMap.py
   trunk/pysoy/include/soy.textures.pxd
   trunk/pysoy/src/_datatypes/MaterialList.pym
   trunk/pysoy/src/materials/Textured.pym
   trunk/pysoy/src/textures/NormalisationCubeMap.pym
Log:
Ticket #955 :
  * NormalisationCubeMap now uses Texture's methods (vs replacing them)
  * unlit examples/CubeMap to show the colors without shading
  * various formatting cleanups


Modified: trunk/pysoy/examples/CubeMap.py
===================================================================
--- trunk/pysoy/examples/CubeMap.py     2008-05-20 02:26:36 UTC (rev 1282)
+++ trunk/pysoy/examples/CubeMap.py     2008-05-20 04:18:58 UTC (rev 1283)
@@ -4,10 +4,11 @@
 from time import sleep
 
 sce = soy.scenes.Scene()
+sce.ambient = soy.colors.white
 cam = soy.bodies.Camera(sce)
 cam.position = (0.0, 0.0, 5.0)
-lig = soy.bodies.Light(sce)
-lig.position = (-10.0,10.0,2.0)
+#lig = soy.bodies.Light(sce)
+#lig.position = (-10.0,10.0,2.0)
 
 tex = soy.textures.NormalisationCubeMap()
 mat = soy.materials.Textured(colormap=tex)

Modified: trunk/pysoy/include/soy.textures.pxd
===================================================================
--- trunk/pysoy/include/soy.textures.pxd        2008-05-20 02:26:36 UTC (rev 
1282)
+++ trunk/pysoy/include/soy.textures.pxd        2008-05-20 04:18:58 UTC (rev 
1283)
@@ -72,6 +72,5 @@
   cdef double                 _startTime
   cdef double                 _frameTime
 
-cdef class NormalisationCubeMap(Texture):
-  cdef int                    _was_created
-  cdef void                   _generate     ( self, int, int )            nogil
+cdef class NormalisationCubeMap (Texture) :
+  cdef int _null

Modified: trunk/pysoy/src/_datatypes/MaterialList.pym
===================================================================
--- trunk/pysoy/src/_datatypes/MaterialList.pym 2008-05-20 02:26:36 UTC (rev 
1282)
+++ trunk/pysoy/src/_datatypes/MaterialList.pym 2008-05-20 04:18:58 UTC (rev 
1283)
@@ -104,11 +104,8 @@
     for _i from 0 <= _i < self._children._current :
       _pass = 0
       while (<soy.materials.Material> 
-             self._children._list[_i])._render(_pass,
-                                               <float*> 24, 
-                                               <float*> (52 *
-                                                self._mesh._verts._bufferAlloc)
-                                               ) :
+             self._children._list[_i])._render(
+        _pass, <float*> 24, <float*> (52 * self._mesh._verts._bufferAlloc)) :
         self._mesh._faces._render(self._ranges[_i].offset,
                                   self._ranges[_i].length)
         _pass += 1

Modified: trunk/pysoy/src/materials/Textured.pym
===================================================================
--- trunk/pysoy/src/materials/Textured.pym      2008-05-20 02:26:36 UTC (rev 
1282)
+++ trunk/pysoy/src/materials/Textured.pym      2008-05-20 04:18:58 UTC (rev 
1283)
@@ -177,12 +177,8 @@
       #
       ####################################
       #
-      # disable what we're not using and return
+      # return 1
       #
-      #
-      for _i from _unit <= _i < 4 :
-        gl.glActiveTexture(_texunits[_i])
-        gl.glDisableClientState(gl.GL_TEXTURE_COORD_ARRAY)
       return 1
     #
     ######################################

Modified: trunk/pysoy/src/textures/NormalisationCubeMap.pym
===================================================================
--- trunk/pysoy/src/textures/NormalisationCubeMap.pym   2008-05-20 02:26:36 UTC 
(rev 1282)
+++ trunk/pysoy/src/textures/NormalisationCubeMap.pym   2008-05-20 04:18:58 UTC 
(rev 1283)
@@ -1,215 +1,135 @@
 cimport stdlib
 
 cdef class NormalisationCubeMap(Texture):
-  def __cinit__(self):
-    self._was_created = 0
+  def __cinit__(self, *args, **keywords) :
+    cdef int i, j
+    cdef float _length
+    cdef float _vector[3]
+    cdef unsigned char* _ptr
 
-  def generate(self,x,y):
-    self._generate(x,y)
-    
+    self._resize(1, 3, 32, 32, 6)
+    _ptr = self._texels
 
-  cdef void _generate(self, int x_size, int y_size) nogil :
-    self._was_created = 1
-    self._target = gl.GL_TEXTURE_CUBE_MAP
-    self._bytes = 1
-    self._chans = 3
-    gl.glGenTextures(1, &self._textureID)
-    gl.glBindTexture(self._target, self._textureID)
+    # +X
+    for j from 0 < j <= 32:
+      for i from 0 < i <= 32:
+        _vector[0] = 16.0
+        _vector[1] = (-(j + 0.5 - 16.0))
+        _vector[2] = (-(i + 0.5 - 16.0))
 
-    #cdef int   size   = 32
-    cdef float offset
-    cdef float halfSizeX
-    cdef unsigned char* data
-    cdef unsigned char* bytePtr
-    cdef int i,j
-    cdef float temp_vector[3]
-    cdef float length
+        _length = stdlib.sqrtf( _vector[0] * _vector[0] + 
+                                _vector[1] * _vector[1] + 
+                                _vector[2] * _vector[2] )
 
-    data = <unsigned char*>stdlib.malloc(x_size*x_size*3)
-    halfSizeX = <float>x_size / 2.0
-    offset = 0.5
+        _vector[0] = 0.5 * (_vector[0] / _length) + 0.5
+        _vector[1] = 0.5 * (_vector[1] / _length) + 0.5
+        _vector[2] = 0.5 * (_vector[2] / _length) + 0.5
 
-    #+X
-    bytePtr = data
-    for j from 0 < j <= x_size:
-      for i from 0 < i <= x_size:
-        temp_vector[0] = (halfSizeX)
-        temp_vector[1] = (-(j+offset-halfSizeX))
-        temp_vector[2] = (-(i+offset-halfSizeX))
+        _ptr[0] = <unsigned char> (_vector[0] * 255)
+        _ptr[1] = <unsigned char> (_vector[1] * 255)
+        _ptr[2] = <unsigned char> (_vector[2] * 255)
+        _ptr = _ptr + 3
 
-        length = stdlib.sqrtf(temp_vector[0]*temp_vector[0] + temp_vector[1] * 
temp_vector[1] + temp_vector[2]*temp_vector[2])
 
-        temp_vector[0] = temp_vector[0] / length
-        temp_vector[1] = temp_vector[1] / length
-        temp_vector[2] = temp_vector[2] / length
-
-        temp_vector[0] = 0.5 * temp_vector[0] + 0.5
-        temp_vector[1] = 0.5 * temp_vector[1] + 0.5
-        temp_vector[2] = 0.5 * temp_vector[2] + 0.5
-
-        bytePtr[0] = <unsigned char>(temp_vector[0]*255);
-        bytePtr[1] = <unsigned char>(temp_vector[1]*255);
-        bytePtr[2] = <unsigned char>(temp_vector[2]*255);
-        bytePtr = bytePtr + 3;
-
-    gl.glTexImage2D(gl.GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, gl.GL_RGBA8, 
-        x_size, x_size,
-        0, self._formats[self._chans], self._types[self._bytes], data)
-
     #-X
-    bytePtr = data
-    for j from 0 < j <= x_size:
-      for i from 0 < i <= x_size:
-        temp_vector[0] = (-halfSizeX)
-        temp_vector[1] = (-(j+offset-halfSizeX))
-        temp_vector[2] = ((i+offset-halfSizeX))
+    for j from 0 < j <= 32:
+      for i from 0 < i <= 32:
+        _vector[0] = -16.0
+        _vector[1] = (-(j + 0.5 - 16.0))
+        _vector[2] = ((i + 0.5 - 16.0))
 
-        length = stdlib.sqrtf(temp_vector[0]*temp_vector[0] + temp_vector[1] * 
temp_vector[1] + temp_vector[2]*temp_vector[2])
+        _length = stdlib.sqrtf( _vector[0] * _vector[0] + 
+                               _vector[1] * _vector[1] + 
+                               _vector[2] * _vector[2] )
 
-        temp_vector[0] = temp_vector[0] / length
-        temp_vector[1] = temp_vector[1] / length
-        temp_vector[2] = temp_vector[2] / length
+        _vector[0] = 0.5 * (_vector[0] / _length) + 0.5
+        _vector[1] = 0.5 * (_vector[1] / _length) + 0.5
+        _vector[2] = 0.5 * (_vector[2] / _length) + 0.5
 
-        temp_vector[0] = 0.5 * temp_vector[0] + 0.5
-        temp_vector[1] = 0.5 * temp_vector[1] + 0.5
-        temp_vector[2] = 0.5 * temp_vector[2] + 0.5
-
-        bytePtr[0] = <unsigned char>(temp_vector[0]*255);
-        bytePtr[1] = <unsigned char>(temp_vector[1]*255);
-        bytePtr[2] = <unsigned char>(temp_vector[2]*255);
-        bytePtr = bytePtr + 3;
+        _ptr[0] = <unsigned char> (_vector[0] * 255)
+        _ptr[1] = <unsigned char> (_vector[1] * 255)
+        _ptr[2] = <unsigned char> (_vector[2] * 255)
+        _ptr = _ptr + 3
     
-    gl.glTexImage2D(gl.GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, gl.GL_RGBA8, x_size, 
x_size,
-        0, gl.GL_RGB, gl.GL_UNSIGNED_BYTE, data)
-
     #+Y
-    bytePtr = data
-    for j from 0 < j <= x_size:
-      for i from 0 < i <= x_size:
-        temp_vector[0] = i+offset-halfSizeX
-        temp_vector[1] = halfSizeX
-        temp_vector[2] = j+offset - halfSizeX
+    for j from 0 < j <= 32:
+      for i from 0 < i <= 32:
+        _vector[0] = i + 0.5 - 16.0
+        _vector[1] = 16.0
+        _vector[2] = j + 0.5 - 16.0
 
-        length = stdlib.sqrtf(temp_vector[0]*temp_vector[0] + temp_vector[1] * 
temp_vector[1] + temp_vector[2]*temp_vector[2])
+        _length = stdlib.sqrtf(_vector[0] * _vector[0] + _vector[1] * 
_vector[1] + _vector[2]*_vector[2])
 
-        temp_vector[0] = temp_vector[0] / length
-        temp_vector[1] = temp_vector[1] / length
-        temp_vector[2] = temp_vector[2] / length
+        _vector[0] = 0.5 * (_vector[0] / _length) + 0.5
+        _vector[1] = 0.5 * (_vector[1] / _length) + 0.5
+        _vector[2] = 0.5 * (_vector[2] / _length) + 0.5
 
-        temp_vector[0] = 0.5 * temp_vector[0] + 0.5
-        temp_vector[1] = 0.5 * temp_vector[1] + 0.5
-        temp_vector[2] = 0.5 * temp_vector[2] + 0.5
-
-        bytePtr[0] = <unsigned char>(temp_vector[0]*255);
-        bytePtr[1] = <unsigned char>(temp_vector[1]*255);
-        bytePtr[2] = <unsigned char>(temp_vector[2]*255);
-        bytePtr = bytePtr + 3;
+        _ptr[0] = <unsigned char> (_vector[0] * 255)
+        _ptr[1] = <unsigned char> (_vector[1] * 255)
+        _ptr[2] = <unsigned char> (_vector[2] * 255)
+        _ptr = _ptr + 3
     
-    gl.glTexImage2D(gl.GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, gl.GL_RGBA8, x_size, 
x_size,
-        0, gl.GL_RGB, gl.GL_UNSIGNED_BYTE, data)
 
     #-Y
-    bytePtr = data
-    for j from 0 < j <= x_size:
-      for i from 0 < i <= x_size:
-        temp_vector[0] = (i+offset-halfSizeX)
-        temp_vector[1] =-(halfSizeX)
-        temp_vector[2] =-(j+offset - halfSizeX)
+    for j from 0 < j <= 32:
+      for i from 0 < i <= 32:
+        _vector[0] = (i + 0.5 - 16.0)
+        _vector[1] =-16.0
+        _vector[2] =-(j + 0.5 - 16.0)
 
-        length = stdlib.sqrtf(temp_vector[0]*temp_vector[0] + temp_vector[1] * 
temp_vector[1] + temp_vector[2]*temp_vector[2])
+        _length = stdlib.sqrtf(_vector[0] * _vector[0] + _vector[1] * 
_vector[1] + _vector[2]*_vector[2])
 
-        temp_vector[0] = temp_vector[0] / length
-        temp_vector[1] = temp_vector[1] / length
-        temp_vector[2] = temp_vector[2] / length
+        _vector[0] = 0.5 * (_vector[0] / _length) + 0.5
+        _vector[1] = 0.5 * (_vector[1] / _length) + 0.5
+        _vector[2] = 0.5 * (_vector[2] / _length) + 0.5
 
-        temp_vector[0] = 0.5 * temp_vector[0] + 0.5
-        temp_vector[1] = 0.5 * temp_vector[1] + 0.5
-        temp_vector[2] = 0.5 * temp_vector[2] + 0.5
-
-        bytePtr[0] = <unsigned char>(temp_vector[0]*255);
-        bytePtr[1] = <unsigned char>(temp_vector[1]*255);
-        bytePtr[2] = <unsigned char>(temp_vector[2]*255);
-        bytePtr = bytePtr + 3;
+        _ptr[0] = <unsigned char> (_vector[0] * 255)
+        _ptr[1] = <unsigned char> (_vector[1] * 255)
+        _ptr[2] = <unsigned char> (_vector[2] * 255)
+        _ptr = _ptr + 3
     
-    gl.glTexImage2D(gl.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, gl.GL_RGBA8, x_size, 
x_size,
-        0, gl.GL_RGB, gl.GL_UNSIGNED_BYTE, data)
 
     #+Z
-    bytePtr = data
-    for j from 0 < j <= x_size:
-      for i from 0 < i <= x_size:
-        temp_vector[0] = (i+offset-halfSizeX)
-        temp_vector[1] = (j+offset-halfSizeX)
-        temp_vector[2] = (halfSizeX)
+    for j from 0 < j <= 32:
+      for i from 0 < i <= 32:
+        _vector[0] = (i + 0.5 - 16.0)
+        _vector[1] = (j + 0.5 - 16.0)
+        _vector[2] = 16.0
 
-        length = stdlib.sqrtf(temp_vector[0]*temp_vector[0] + temp_vector[1] * 
temp_vector[1] + temp_vector[2]*temp_vector[2])
+        _length = stdlib.sqrtf(_vector[0] * _vector[0] + _vector[1] * 
_vector[1] + _vector[2]*_vector[2])
 
-        temp_vector[0] = temp_vector[0] / length
-        temp_vector[1] = temp_vector[1] / length
-        temp_vector[2] = temp_vector[2] / length
+        _vector[0] = 0.5 * (_vector[0] / _length) + 0.5
+        _vector[1] = 0.5 * (_vector[1] / _length) + 0.5
+        _vector[2] = 0.5 * (_vector[2] / _length) + 0.5
 
-        temp_vector[0] = 0.5 * temp_vector[0] + 0.5
-        temp_vector[1] = 0.5 * temp_vector[1] + 0.5
-        temp_vector[2] = 0.5 * temp_vector[2] + 0.5
-
-        bytePtr[0] = <unsigned char>(temp_vector[0]*255);
-        bytePtr[1] = <unsigned char>(temp_vector[1]*255);
-        bytePtr[2] = <unsigned char>(temp_vector[2]*255);
-        bytePtr = bytePtr + 3;
+        _ptr[0] = <unsigned char> (_vector[0] * 255)
+        _ptr[1] = <unsigned char> (_vector[1] * 255)
+        _ptr[2] = <unsigned char> (_vector[2] * 255)
+        _ptr = _ptr + 3
     
-    gl.glTexImage2D(gl.GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, gl.GL_RGBA8, x_size, 
x_size,
-        0, gl.GL_RGB, gl.GL_UNSIGNED_BYTE, data)
 
-
     #-Z
-    bytePtr = data
-    for j from 0 < j <= x_size:
-      for i from 0 < i <= x_size:
-        temp_vector[0] = (i+offset-halfSizeX)
-        temp_vector[1] =-(j+offset-halfSizeX)
-        temp_vector[2] =-(halfSizeX)
+    for j from 0 < j <= 32:
+      for i from 0 < i <= 32:
+        _vector[0] = (i + 0.5 - 16.0)
+        _vector[1] =-(j + 0.5 - 16.0)
+        _vector[2] =-16.0
 
-        length = stdlib.sqrtf(temp_vector[0]*temp_vector[0] + temp_vector[1] * 
temp_vector[1] + temp_vector[2]*temp_vector[2])
+        _length = stdlib.sqrtf(_vector[0] * _vector[0] + _vector[1] * 
_vector[1] + _vector[2]*_vector[2])
 
-        temp_vector[0] = temp_vector[0] / length
-        temp_vector[1] = temp_vector[1] / length
-        temp_vector[2] = temp_vector[2] / length
+        _vector[0] = 0.5 * (_vector[0] / _length) + 0.5
+        _vector[1] = 0.5 * (_vector[1] / _length) + 0.5
+        _vector[2] = 0.5 * (_vector[2] / _length) + 0.5
 
-        temp_vector[0] = 0.5 * temp_vector[0] + 0.5
-        temp_vector[1] = 0.5 * temp_vector[1] + 0.5
-        temp_vector[2] = 0.5 * temp_vector[2] + 0.5
-
-        bytePtr[0] = <unsigned char>(temp_vector[0]*255);
-        bytePtr[1] = <unsigned char>(temp_vector[1]*255);
-        bytePtr[2] = <unsigned char>(temp_vector[2]*255);
-        bytePtr = bytePtr + 3;
+        _ptr[0] = <unsigned char> (_vector[0] * 255)
+        _ptr[1] = <unsigned char> (_vector[1] * 255)
+        _ptr[2] = <unsigned char> (_vector[2] * 255)
+        _ptr = _ptr + 3
     
-    gl.glTexImage2D(gl.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, gl.GL_RGBA8, x_size, 
x_size,
-        0, gl.GL_RGB, gl.GL_UNSIGNED_BYTE, data)
-
-    stdlib.free(data)
-
-    gl.glTexParameteri(self._target, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR);
-    gl.glTexParameteri(self._target, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR);
-    gl.glTexParameteri(self._target, gl.GL_TEXTURE_WRAP_S  , 
gl.GL_CLAMP_TO_EDGE);
-    gl.glTexParameteri(self._target, gl.GL_TEXTURE_WRAP_T  , 
gl.GL_CLAMP_TO_EDGE);
-    gl.glTexParameteri(self._target, gl.GL_TEXTURE_WRAP_R  , 
gl.GL_CLAMP_TO_EDGE);
-
-
-  ##########################################################################
-  #
-  # WindowLoop Functions
-  #
-
-  cdef void _enable(self) nogil :
-    py.PyThread_acquire_lock(self._mutex,1)
-    if self._was_created == 0 :
-      self._generate(32,32)
-    gl.glEnable(self._target)
-    gl.glBindTexture(self._target, self._textureID)
-
-
-  cdef void _disable(self) nogil :
-    gl.glDisable(self._target)
-    gl.glBindTexture(self._target, 0)
-    py.PyThread_release_lock(self._mutex)
+    '''
+    gl.glTexParameteri(self._target, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR)
+    gl.glTexParameteri(self._target, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR)
+    gl.glTexParameteri(self._target, gl.GL_TEXTURE_WRAP_S  , 
gl.GL_CLAMP_TO_EDGE)
+    gl.glTexParameteri(self._target, gl.GL_TEXTURE_WRAP_T  , 
gl.GL_CLAMP_TO_EDGE)
+    gl.glTexParameteri(self._target, gl.GL_TEXTURE_WRAP_R  , 
gl.GL_CLAMP_TO_EDGE)
+    '''

_______________________________________________
PySoy-SVN mailing list
PySoy-SVN@pysoy.org
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to