Thread: [cgkit-commits] SF.net SVN: cgkit:[260] cgkit/trunk/cgkit/slparams.py
Brought to you by:
mbaas
From: <mb...@us...> - 2008-09-29 17:40:38
|
Revision: 260 http://cgkit.svn.sourceforge.net/cgkit/?rev=260&view=rev Author: mbaas Date: 2008-09-29 17:40:25 +0000 (Mon, 29 Sep 2008) Log Message: ----------- convertdefault now also works with default values that are already stored as a native Python value intead of a string. Modified Paths: -------------- cgkit/trunk/cgkit/slparams.py Modified: cgkit/trunk/cgkit/slparams.py =================================================================== --- cgkit/trunk/cgkit/slparams.py 2008-09-19 19:08:26 UTC (rev 259) +++ cgkit/trunk/cgkit/slparams.py 2008-09-29 17:40:25 UTC (rev 260) @@ -422,19 +422,26 @@ - normal -> vec3 - matrix -> mat4 - Arrays will be converted into lists of the corresponding type. + Arrays will be converted into lists of the corresponding type. """ global _local_namespace typ = paramtuple[2] arraylen = paramtuple[3] defstr = paramtuple[6] + + # The default value is not a string? Then it already contains the + # converted default value (this is the case when the value was + # extracted from a compiled shader). + if not isinstance(defstr, basestring): + return defstr # Replace {} with [] so that SL arrays look like Python lists - defstr = defstr.replace("{","[").replace("}","]") + if arraylen is not None: + defstr = defstr.replace("{","[").replace("}","]") # If the parameter is not an array, then create an array with one # element (to unify further processing). It will be unwrapped in the end - if arraylen==None: + if arraylen is None: defstr = "[%s]"%defstr # Evaluate the string to create "raw" Python types (lists and tuples) try: @@ -464,7 +471,7 @@ except: return None - if arraylen==None: + if arraylen is None: if len(res)==0: return None else: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mb...@us...> - 2009-02-05 23:34:44
|
Revision: 276 http://cgkit.svn.sourceforge.net/cgkit/?rev=276&view=rev Author: mbaas Date: 2009-02-05 23:34:41 +0000 (Thu, 05 Feb 2009) Log Message: ----------- convertdefault() now also returns the appropriate types when the param was read from a compiled shader (in which case the default is not a string and has to be 'cast'). Modified Paths: -------------- cgkit/trunk/cgkit/slparams.py Modified: cgkit/trunk/cgkit/slparams.py =================================================================== --- cgkit/trunk/cgkit/slparams.py 2009-02-05 23:33:01 UTC (rev 275) +++ cgkit/trunk/cgkit/slparams.py 2009-02-05 23:34:41 UTC (rev 276) @@ -448,7 +448,20 @@ # converted default value (this is the case when the value was # extracted from a compiled shader). if not isinstance(defstr, basestring): - return defstr + # Make sure that point-like types are returned as vec3 and matrix types + # are returned as mat4. + if typ in ["color", "point", "vector", "normal"]: + retType = cgtypes.vec3 + elif typ=="matrix": + retType = cgtypes.mat4 + else: + # No vec3/mat4 type, then just return the value + return defstr + # Cast the value... + if arraylen is None: + return retType(defstr) + else: + return map(lambda v: retType(v), defstr) # Replace {} with [] so that SL arrays look like Python lists if arraylen is not None: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mb...@us...> - 2009-03-01 11:08:29
|
Revision: 295 http://cgkit.svn.sourceforge.net/cgkit/?rev=295&view=rev Author: mbaas Date: 2009-03-01 11:08:26 +0000 (Sun, 01 Mar 2009) Log Message: ----------- Minor updates to the doc strings. Modified Paths: -------------- cgkit/trunk/cgkit/slparams.py Modified: cgkit/trunk/cgkit/slparams.py =================================================================== --- cgkit/trunk/cgkit/slparams.py 2009-02-28 17:46:47 UTC (rev 294) +++ cgkit/trunk/cgkit/slparams.py 2009-03-01 11:08:26 UTC (rev 295) @@ -252,7 +252,8 @@ - type: The type of the shader (surface, displacement, etc.) - name: The name of the shader - params: The shader parameters (see below) - - meta: The shader meta data + - meta: The shader meta data. How exactly meta data is specified depends + on the renderer you are using. The parameters are given as a list of shader parameter objects describing each parameter. A shader parameter object has the @@ -263,7 +264,7 @@ - type: The parameter type - size: The array length or None if the parameter is not an array - name: The name of the parameter - - spacE: The space in which a point-like type was defined + - space: The space in which a point-like type was defined - default: The default value (always given as a string) For backwards compatibility, the shader info object behaves like a @@ -419,8 +420,8 @@ def convertdefault(paramtuple): """Converts the default value of a shader parameter into a Python type. - paramtuple must be a 7-tuple as returned by slparams(). The - function returns a Python object that corresponds to the default + paramtuple must be a 7-tuple (or parameter object) as returned by slparams(). + The function returns a Python object that corresponds to the default value of the parameter. If the default value can't be converted then None is returned. Only the functions that are present in the sl module are evaluated. If a default value calls a user defined This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mb...@us...> - 2009-04-07 21:38:33
|
Revision: 301 http://cgkit.svn.sourceforge.net/cgkit/?rev=301&view=rev Author: mbaas Date: 2009-04-07 21:38:26 +0000 (Tue, 07 Apr 2009) Log Message: ----------- Make the module usable when ctypes is not available (so builtin ri module can still be used in that case). Modified Paths: -------------- cgkit/trunk/cgkit/slparams.py Modified: cgkit/trunk/cgkit/slparams.py =================================================================== --- cgkit/trunk/cgkit/slparams.py 2009-04-02 22:21:10 UTC (rev 300) +++ cgkit/trunk/cgkit/slparams.py 2009-04-07 21:38:26 UTC (rev 301) @@ -53,7 +53,12 @@ import cgtypes, math, sl, simplecpp import _slparser from _slreturntypes import _ShaderInfo, _ShaderParam -import sloargs +try: + import sloargs + _has_sloargs = True +except ImportError, exc: + _has_sloargs = False + _sloargs_importerror = exc class SLParamsError(Exception): pass @@ -282,7 +287,10 @@ # (suffix != .sl). If so, use the sloargs module to get the shader information if isinstance(slfile, basestring): if os.path.splitext(slfile)[1].lower()!=".sl": - return sloargs.slparams(slfile) + if (_has_sloargs): + return sloargs.slparams(slfile) + else: + raise _sloargs_importerror # Run the preprocessor on the input file... This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mb...@us...> - 2009-05-09 09:58:59
|
Revision: 311 http://cgkit.svn.sourceforge.net/cgkit/?rev=311&view=rev Author: mbaas Date: 2009-05-09 09:58:50 +0000 (Sat, 09 May 2009) Log Message: ----------- Updated the doc string for slparams(). Modified Paths: -------------- cgkit/trunk/cgkit/slparams.py Modified: cgkit/trunk/cgkit/slparams.py =================================================================== --- cgkit/trunk/cgkit/slparams.py 2009-05-09 09:56:44 UTC (rev 310) +++ cgkit/trunk/cgkit/slparams.py 2009-05-09 09:58:50 UTC (rev 311) @@ -270,7 +270,12 @@ - size: The array length or None if the parameter is not an array - name: The name of the parameter - space: The space in which a point-like type was defined - - default: The default value (always given as a string) + - default: The "raw" default value. If the input was a shader source file, + this will always be a string containing an expression. If the input was + a compiled shader this will already be an appropriate Python value. + You should never use this value directly, but always use convertdefault() + to obtain a value which can be further processed. This way, your code + will work for both, compiled shaders and shader source files. For backwards compatibility, the shader info object behaves like a 3-tuple (type, name, params). The meta data can only be accessed via name This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |