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