40 |
("T2", "RGB2"), |
("T2", "RGB2"), |
41 |
("T2", "RGB2"), |
("T2", "RGB2"), |
42 |
], |
], |
43 |
[ ("T2", "DSDT"), |
[ |
44 |
("O", "FOOBAR") |
("T2", "DSDT"), |
45 |
|
("O", "RGB2"), |
46 |
|
("T2", "DSDT"), |
47 |
|
("O", "RGB2") |
48 |
], |
], |
49 |
[ ("T2", "DSDT_HILO"), |
[ |
50 |
("OH", "FOOBAR") |
("T2", "DSDT_HILO"), |
51 |
|
("OH", "RGB2"), |
52 |
|
("T2", "DSDT_HILO"), |
53 |
|
("OH", "RGB2"), |
54 |
] |
] |
55 |
] |
] |
56 |
|
|
94 |
pass |
pass |
95 |
|
|
96 |
class ShaderPass: |
class ShaderPass: |
97 |
def __init__(self, shaderType): |
def __init__(self, shaderType, maxaniso): |
98 |
self.st = shaderType |
self.st = shaderType |
99 |
self.tex = [None for texunit in shaderType] |
self.tex = [None for texunit in shaderType] |
100 |
|
self.maxaniso = maxaniso |
101 |
def getTextureTypes(self): |
def getTextureTypes(self): |
102 |
"Get the texture type names (D2, R2 ...) for the texture units." |
"Get the texture type names (D2, R2 ...) for the texture units." |
103 |
return [texunit[1] for texunit in self.st] |
return [texunit[1] for texunit in self.st] |
106 |
return [shaderTexgenTypes[texunit[0]] for texunit in self.st] |
return [shaderTexgenTypes[texunit[0]] for texunit in self.st] |
107 |
def setTexture(self, ind, tex): |
def setTexture(self, ind, tex): |
108 |
self.tex[ind] = tex |
self.tex[ind] = tex |
109 |
def setupCode(self): |
def setupCode(self, rnd): |
110 |
c = """ |
c = """ |
111 |
Enable TEXTURE_SHADER_NV |
Enable TEXTURE_SHADER_NV |
112 |
""" |
""" |
120 |
TexEnv TEXTURE_SHADER_NV SHADER_OPERATION_NV %(op)s |
TexEnv TEXTURE_SHADER_NV SHADER_OPERATION_NV %(op)s |
121 |
|
|
122 |
""" % locals() |
""" % locals() |
123 |
|
|
124 |
if target != None: |
if target != None: |
125 |
texid = self.tex[t].getTexId() |
texid = self.tex[t].getTexId() |
126 |
minfilter = self.tex[t].minfilter |
minfilter = self.tex[t].minfilter |
139 |
c += """ |
c += """ |
140 |
TexEnv TEXTURE_SHADER_NV PREVIOUS_TEXTURE_INPUT_NV TEXTURE%s |
TexEnv TEXTURE_SHADER_NV PREVIOUS_TEXTURE_INPUT_NV TEXTURE%s |
141 |
""" % (self.st[t][2]) |
""" % (self.st[t][2]) |
142 |
|
|
143 |
|
if shortOp in [ "O", "OH" ]: |
144 |
|
hyper = rnd.nextGaussian() |
145 |
|
mat = ( rnd.nextGaussian()*hyper, |
146 |
|
rnd.nextGaussian()*hyper, |
147 |
|
rnd.nextGaussian()*hyper, |
148 |
|
rnd.nextGaussian()*hyper ) |
149 |
|
c += """ |
150 |
|
TexEnv TEXTURE_SHADER_NV OFFSET_TEXTURE_MATRIX_NV %s %s %s %s |
151 |
|
""" % mat |
152 |
|
|
153 |
|
|
154 |
|
if self.maxaniso != None: |
155 |
|
maxaniso = self.maxaniso |
156 |
|
c += """ |
157 |
|
TexParameter %(target)s TEXTURE_MAX_ANISOTROPY_EXT %(maxaniso)s |
158 |
|
""" % locals() |
159 |
|
|
160 |
return c |
return c |
161 |
def getRGBoutputs(self): |
def getRGBoutputs(self): |
162 |
"""A list of the texture units whose outputs are useful in |
"""A list of the texture units whose outputs are useful in |
169 |
return [self.tex[i].scale for i in self.getRGBoutputs()] |
return [self.tex[i].scale for i in self.getRGBoutputs()] |
170 |
|
|
171 |
def makeNormalShaderPass(maxaniso = None): |
def makeNormalShaderPass(maxaniso = None): |
172 |
# XXX: TODO: implement maxaniso as in texops_STD |
return ShaderPass(shaderTypes[5], maxaniso) |
|
#return ShaderPass(shaderTypes[3]) |
|
|
return ShaderPass(shaderTypes[5]) |
|