Author: ArcRiley Date: 2008-03-20 03:38:07 -0400 (Thu, 20 Mar 2008) New Revision: 1188
Modified: trunk/pysoy/src/_datatypes/FaceList.pxi trunk/pysoy/src/_datatypes/MaterialList.pxi trunk/pysoy/src/_datatypes/VertexList.pxi trunk/pysoy/src/atoms/Face.pxi trunk/pysoy/src/bodies/Body.pxi trunk/pysoy/src/bodies/soy.bodies.pxd trunk/pysoy/src/materials/Material.pxi trunk/pysoy/src/materials/soy.materials.pxd Log: Ticket #936 : * improved checking (tabulates _hasBumps now) * renamed some _core* and fixed some long lines * eliminated redundant _has_bumpmap() function * seems to work again - mostly. Modified: trunk/pysoy/src/_datatypes/FaceList.pxi =================================================================== --- trunk/pysoy/src/_datatypes/FaceList.pxi 2008-03-20 07:35:51 UTC (rev 1187) +++ trunk/pysoy/src/_datatypes/FaceList.pxi 2008-03-20 07:38:07 UTC (rev 1188) @@ -74,8 +74,9 @@ gl.GL_UNSIGNED_SHORT, (<Face*> 0) + _offset) - cdef void _renderBumpPass (self, int a , int b): - pass + cdef void _renderBumpPass(self, int _offset, int _length): + gl.glDrawElements (gl.GL_TRIANGLES, _length*3, + gl.GL_UNSIGNED_SHORT, (<Face*> 0) + _offset) cdef void _createBuffer(self) : Modified: trunk/pysoy/src/_datatypes/MaterialList.pxi =================================================================== --- trunk/pysoy/src/_datatypes/MaterialList.pxi 2008-03-20 07:35:51 UTC (rev 1187) +++ trunk/pysoy/src/_datatypes/MaterialList.pxi 2008-03-20 07:38:07 UTC (rev 1188) @@ -82,6 +82,7 @@ if self._children._current == 0 : return _mesh = <soy.models.Mesh> self._mesh + if self._hasBumps : _mesh._verts._calculateTSLV(body) @@ -92,17 +93,18 @@ _mesh._faces._sendUpdated() _mesh._verts._renderBumpPass() - self._children._iterStart() - for _i from 0 <= _i < self._children._current : - if (<soy.materials.Material> - self._children._list[_i])._has_bumpmap() : - (<soy.materials.Material> - self._children._list[_i])._coreBindBumpPass() - _mesh._faces._render(self._ranges[_i].offset, - self._ranges[_i].length) - (<soy.materials.Material> - self._children._list[_i])._coreUnBindBumpPass() - self._children._iterDone() + if self._hasBumps : + self._children._iterStart() + for _i from 0 <= _i < self._children._current : + if (<soy.materials.Material> + self._children._list[_i])._normal : + (<soy.materials.Material> + self._children._list[_i])._coreBindBumpPass() + _mesh._faces._render(self._ranges[_i].offset, + self._ranges[_i].length) + (<soy.materials.Material> + self._children._list[_i])._coreUnBindBumpPass() + self._children._iterDone() _mesh._verts._render() self._children._iterStart() Modified: trunk/pysoy/src/_datatypes/VertexList.pxi =================================================================== --- trunk/pysoy/src/_datatypes/VertexList.pxi 2008-03-20 07:35:51 UTC (rev 1187) +++ trunk/pysoy/src/_datatypes/VertexList.pxi 2008-03-20 07:38:07 UTC (rev 1188) @@ -110,12 +110,14 @@ # gl.glNormalPointer ( gl.GL_FLOAT, sizeof(Vert), <float*> 12) gl.glVertexPointer (3, gl.GL_FLOAT, sizeof(Vert), <float*> 0) - gl.glFogCoordPointerEXT( gl.GL_FLOAT, 0, <float*> (sizeof(Vert) * self._bufferAlloc)) + gl.glFogCoordPointerEXT( gl.GL_FLOAT, 0, <float*> + (sizeof(Vert) * self._bufferAlloc)) gl.glTexCoordPointer(3, gl.GL_FLOAT, sizeof(Vert), <float*> 24) # gl.glClientActiveTexture(gl.GL_TEXTURE1) gl.glEnableClientState(gl.GL_TEXTURE_COORD_ARRAY) - gl.glTexCoordPointer(3, gl.GL_FLOAT, 0, <float*> ( (sizeof(Vert)+sizeof(float)) * self._bufferAlloc)) + gl.glTexCoordPointer(3, gl.GL_FLOAT, 0, <float*> + ( (sizeof(Vert)+sizeof(float)) * self._bufferAlloc)) gl.glClientActiveTexture(gl.GL_TEXTURE0) @@ -201,7 +203,7 @@ if _scene._lights._current > 0 : _light = <soy.bodies.Light> _scene._lights._list[0] - _body._coreGetModelviewInv(_inv_mm) + _body._getModelviewInv(_inv_mm) # # Vector by matrix multiplication by hand # This code needs to average the light color and vector Modified: trunk/pysoy/src/atoms/Face.pxi =================================================================== --- trunk/pysoy/src/atoms/Face.pxi 2008-03-20 07:35:51 UTC (rev 1187) +++ trunk/pysoy/src/atoms/Face.pxi 2008-03-20 07:38:07 UTC (rev 1188) @@ -52,6 +52,8 @@ self._index = self._list._arraySize _mindex = mesh._mates._children._current mesh._mates._children._append(<void*> material) + if (<soy.materials.Material> material)._normal : + mesh._mates._hasBumps = mesh._mates._hasBumps + 1 py.Py_INCREF(material) mesh._mates._allocRanges(mesh._mates._children._current) mesh._mates._ranges[_mindex].offset = self._index @@ -163,6 +165,8 @@ # If this was the only face using that material, remove it for i from _mindex < i < mlist._children._current : mlist._ranges[i-1] = mlist._ranges[i] + if (<soy.materials.Material> material)._normal : + mesh._mates._hasBumps = mesh._mates._hasBumps - 1 py.Py_DECREF(<object> mlist._children._list[_mindex]) mlist._children._remove(mlist._children._list[_mindex]) #else : @@ -180,6 +184,8 @@ self._index = self._list._arraySize - 1 _mindex = mlist._children._current mlist._children._append(<void*> material) + if (<soy.materials.Material> material)._normal : + mesh._mates._hasBumps = mesh._mates._hasBumps + 1 py.Py_INCREF(material) mlist._allocRanges(mlist._children._current) mlist._ranges[_mindex].offset = self._index Modified: trunk/pysoy/src/bodies/Body.pxi =================================================================== --- trunk/pysoy/src/bodies/Body.pxi 2008-03-20 07:35:51 UTC (rev 1187) +++ trunk/pysoy/src/bodies/Body.pxi 2008-03-20 07:38:07 UTC (rev 1188) @@ -458,7 +458,7 @@ cdef gl.GLfloat _mtx[16] if self._model == NULL : return - self._coreGetModelview(_mtx) + self._getModelview(_mtx) gl.glPushMatrix() gl.glMultMatrixf(_mtx) (<soy.models.Model> self._model)._render(<void*> self) @@ -472,7 +472,7 @@ _verts = (<soy.models.Model> self._model)._verts _verts._uploadFogCoord( <float> self._position[1] ) - cdef void _coreGetModelview(self, float* _mtx): + cdef void _getModelview(self, float* _mtx): _mtx[0] = self._rotation[0] _mtx[1] = self._rotation[4] _mtx[2] = self._rotation[8] @@ -490,7 +490,7 @@ _mtx[14] = self._position[2] _mtx[15] = 1.0 - cdef void _coreGetModelviewInv(self, float* _mtx): + cdef void _getModelviewInv(self, float* _mtx): _mtx[0] = self._rotation[0] _mtx[4] = self._rotation[4] _mtx[8] = self._rotation[8] Modified: trunk/pysoy/src/bodies/soy.bodies.pxd =================================================================== --- trunk/pysoy/src/bodies/soy.bodies.pxd 2008-03-20 07:35:51 UTC (rev 1187) +++ trunk/pysoy/src/bodies/soy.bodies.pxd 2008-03-20 07:38:07 UTC (rev 1188) @@ -44,8 +44,8 @@ # WindowLoop functions cdef void _render ( self ) cdef void _coreCreateVertFogCoords ( self ) - cdef void _coreGetModelview ( self, float* ) - cdef void _coreGetModelviewInv ( self, float* ) + cdef void _getModelview ( self, float* ) + cdef void _getModelviewInv ( self, float* ) cdef class Camera (Body) : Modified: trunk/pysoy/src/materials/Material.pxi =================================================================== --- trunk/pysoy/src/materials/Material.pxi 2008-03-20 07:35:51 UTC (rev 1187) +++ trunk/pysoy/src/materials/Material.pxi 2008-03-20 07:38:07 UTC (rev 1188) @@ -35,7 +35,10 @@ else : self._color = None - self._normal = normal + if normal : + self._normal = normal + else : + self._normal = None if ambient : self._ambient = ambient @@ -61,7 +64,6 @@ self._emissive = soy.colors.black - def __repr__(self) : return '<Material>' @@ -88,10 +90,6 @@ return 1 return 0 - cdef int _has_bumpmap(self): - if self._normal: - return 1 - return 0 cdef void _coreBind(self) : cdef gl.GLfloat _ambient[4] @@ -125,7 +123,7 @@ if self._color : (<soy.textures.Texture> self._color)._enable() - if self._has_bumpmap(): + if self._normal : gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(gl.GL_DST_COLOR, gl.GL_ZERO) gl.glEnable(gl.GL_POLYGON_OFFSET_FILL) @@ -138,8 +136,7 @@ cdef void _coreUnBind(self) : if self._color : (<soy.textures.Texture> self._color)._disable() - - if self._has_bumpmap(): + if self._normal : gl.glDisable(gl.GL_BLEND) gl.glDisable(gl.GL_POLYGON_OFFSET_FILL) gl.glPolygonOffset(0,0) @@ -150,7 +147,7 @@ gl.glEnable(gl.GL_LIGHTING) cdef void _coreBindBumpPass(self) : - if not self._has_bumpmap() : + if not self._normal : return if not _normalisation_cube_map._was_created : _normalisation_cube_map._generate(32,32) @@ -168,7 +165,7 @@ gl.glActiveTexture(gl.GL_TEXTURE0) cdef void _coreUnBindBumpPass(self) : - if not self._has_bumpmap() : + if not self._normal : return gl.glActiveTexture(gl.GL_TEXTURE0) (<soy.textures.Texture> self._normal)._disable() @@ -282,9 +279,6 @@ def __get__(self): return self._is_transparent() - property has_bumpmap: - def __get__(self): - return self._has_bumpmap() property shadeless: def __get__(self): Modified: trunk/pysoy/src/materials/soy.materials.pxd =================================================================== --- trunk/pysoy/src/materials/soy.materials.pxd 2008-03-20 07:35:51 UTC (rev 1187) +++ trunk/pysoy/src/materials/soy.materials.pxd 2008-03-20 07:38:07 UTC (rev 1188) @@ -44,4 +44,3 @@ cdef void _coreBindBumpPass(self) cdef void _coreUnBindBumpPass(self) cdef int _is_transparent(self) - cdef int _has_bumpmap(self) _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn