8 |
from java.lang import Math |
from java.lang import Math |
9 |
|
|
10 |
execfile("gfx/libcolor/spaces.py") |
execfile("gfx/libcolor/spaces.py") |
11 |
execfile("gfx/libpaper/textures.py") |
|
12 |
execfile("gfx/libpaper/texcoords.py") |
import gfx.libpaper.textures |
13 |
execfile("gfx/libpaper/colors.py") |
# execfile("gfx/libpaper/textures.py") |
14 |
|
# execfile("gfx/libpaper/texcoords.py") |
15 |
|
# execfile("gfx/libpaper/colors.py") |
16 |
|
|
17 |
passmask = [ 1, 0, 0, 0 ] |
passmask = [ 1, 0, 0, 0 ] |
18 |
|
|
80 |
FCI G ZERO UNSIGNED_INVERT_NV ALPHA |
FCI G ZERO UNSIGNED_INVERT_NV ALPHA |
81 |
"""), |
"""), |
82 |
} |
} |
83 |
|
|
84 |
isectcodes = { |
isectcodes = { |
85 |
|
"BAND0" : nvcode.combinercode(""" |
86 |
|
# Band-like texture preliminary |
87 |
|
# Calculate # TEX0 * TEX1 + 0.5, to see |
88 |
|
# how the dot product comes in |
89 |
|
|
90 |
|
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2 |
91 |
|
|
92 |
|
# SPARE0 <- (TEX0 . TEX1) |
93 |
|
CI0 RGB A TEXTURE0 EXPAND_NORMAL_NV RGB |
94 |
|
CI0 RGB B TEXTURE1 EXPAND_NORMAL_NV RGB |
95 |
|
CO0 RGB SPARE0_NV DISCARD_NV DISCARD_NV SCALE_BY_TWO_NV NONE FALSE TRUE FALSE |
96 |
|
|
97 |
|
# SPARE0 <- SPARE0 + 0.5 |
98 |
|
CI1 RGB A SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
99 |
|
CI1 RGB B ZERO UNSIGNED_INVERT_NV RGB |
100 |
|
CI1 RGB C ZERO UNSIGNED_INVERT_NV RGB |
101 |
|
CI1 RGB D ZERO HALF_BIAS_NEGATE_NV RGB |
102 |
|
CO1 RGB DISCARD_NV DISCARD_NV SPARE0_NV NONE NONE FALSE FALSE FALSE |
103 |
|
|
104 |
|
# lerp(EF, PRI_COL, SEC_COL) |
105 |
|
FCI A SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
106 |
|
FCI B ZERO UNSIGNED_INVERT_NV RGB |
107 |
|
FCI C ZERO UNSIGNED_IDENTITY_NV RGB |
108 |
|
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
109 |
|
|
110 |
|
FCI G ZERO UNSIGNED_INVERT_NV BLUE |
111 |
|
"""), |
112 |
|
"BAND1" : nvcode.combinercode(""" |
113 |
|
# Band-like texture preliminary |
114 |
|
# Calculate # (TEX0 . TEX1) + 0.5, to see |
115 |
|
# where the middle is taken from. |
116 |
|
# Moving the basis quads and |
117 |
|
# Flipping between this and BAND1 will explain a lot |
118 |
|
|
119 |
|
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2 |
120 |
|
|
121 |
|
# SPARE0 <- (TEX0 . TEX1) |
122 |
|
CI0 RGB A TEXTURE0 EXPAND_NORMAL_NV RGB |
123 |
|
CI0 RGB B TEXTURE1 EXPAND_NORMAL_NV RGB |
124 |
|
CO0 RGB SPARE0_NV DISCARD_NV DISCARD_NV SCALE_BY_TWO_NV NONE TRUE TRUE FALSE |
125 |
|
|
126 |
|
# SPARE0 <- SPARE0 + 0.5 |
127 |
|
CI1 RGB A SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
128 |
|
CI1 RGB B ZERO UNSIGNED_INVERT_NV RGB |
129 |
|
CI1 RGB C ZERO UNSIGNED_INVERT_NV RGB |
130 |
|
CI1 RGB D ZERO HALF_BIAS_NEGATE_NV RGB |
131 |
|
CO1 RGB DISCARD_NV DISCARD_NV SPARE0_NV NONE NONE FALSE FALSE FALSE |
132 |
|
|
133 |
|
# lerp(EF, PRI_COL, SEC_COL) |
134 |
|
FCI A SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
135 |
|
FCI B ZERO UNSIGNED_INVERT_NV RGB |
136 |
|
FCI C ZERO UNSIGNED_IDENTITY_NV RGB |
137 |
|
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
138 |
|
|
139 |
|
FCI G ZERO UNSIGNED_INVERT_NV BLUE |
140 |
|
"""), |
141 |
|
"BAND2" : nvcode.combinercode(""" |
142 |
|
# Band-like texture |
143 |
|
# No scaling of the output, just calculate |
144 |
|
# (TEX0 . TEX1)**2 and use that for interpolation |
145 |
|
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2 |
146 |
|
|
147 |
|
# SPARE0 <- (TEX0 . TEX1) |
148 |
|
CI0 RGB A TEXTURE0 EXPAND_NORMAL_NV RGB |
149 |
|
CI0 RGB B TEXTURE1 EXPAND_NORMAL_NV RGB |
150 |
|
# CI0 RGB C CONSTANT_COLOR0_NV HALF_BIAS_NORMAL_NV RGB |
151 |
|
CI0 RGB C ZERO UNSIGNED_IDENTITY_NV RGB |
152 |
|
CI0 RGB D ZERO UNSIGNED_INVERT_NV RGB |
153 |
|
CO0 RGB SPARE0_NV DISCARD_NV DISCARD_NV SCALE_BY_FOUR_NV NONE TRUE TRUE FALSE |
154 |
|
|
155 |
|
# SPARE0 <- 2 * SPARE0 * SPARE0 * 2 |
156 |
|
CI1 RGB A SPARE0_NV SIGNED_IDENTITY_NV RGB |
157 |
|
CI1 RGB B SPARE0_NV SIGNED_IDENTITY_NV RGB |
158 |
|
CO1 RGB SPARE0_NV DISCARD_NV DISCARD_NV SCALE_BY_FOUR_NV NONE FALSE FALSE FALSE |
159 |
|
|
160 |
|
# lerp(EF, PRI_COL, SEC_COL) |
161 |
|
FCI A SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
162 |
|
FCI B PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
163 |
|
FCI C SECONDARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
164 |
|
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
165 |
|
|
166 |
|
FCI G ZERO UNSIGNED_INVERT_NV BLUE |
167 |
|
"""), |
168 |
"BAND" : nvcode.combinercode(""" |
"BAND" : nvcode.combinercode(""" |
169 |
# Band-like texture |
# Band-like texture |
170 |
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2 |
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2 |
172 |
# SPARE0 <- (TEX0 . TEX1) |
# SPARE0 <- (TEX0 . TEX1) |
173 |
CI0 RGB A TEXTURE0 EXPAND_NORMAL_NV RGB |
CI0 RGB A TEXTURE0 EXPAND_NORMAL_NV RGB |
174 |
CI0 RGB B TEXTURE1 EXPAND_NORMAL_NV RGB |
CI0 RGB B TEXTURE1 EXPAND_NORMAL_NV RGB |
175 |
CO0 RGB SPARE0_NV DISCARD_NV DISCARD_NV NONE NONE TRUE FALSE FALSE |
CO0 RGB SPARE0_NV DISCARD_NV DISCARD_NV SCALE_BY_FOUR_NV NONE TRUE FALSE FALSE |
176 |
|
|
177 |
# SPARE1 <- SPARE0 * SPARE0 * 2 |
# SPARE1 <- SPARE0 * SPARE0 * 2 |
178 |
# SPARE0 <- (TEX0 . CONST0) * 2 |
# SPARE0 <- (TEX0 . CONST0) * 2 |
229 |
FCI G ZERO UNSIGNED_INVERT_NV ALPHA |
FCI G ZERO UNSIGNED_INVERT_NV ALPHA |
230 |
"""), |
"""), |
231 |
"DOT" : nvcode.combinercode(""" |
"DOT" : nvcode.combinercode(""" |
232 |
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 1 |
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 1 |
233 |
|
|
234 |
# SPARE0 <- (TEX0 . TEX1) |
# SPARE0 <- (TEX0 . TEX1) |
235 |
CI0 RGB A TEXTURE0 EXPAND_NORMAL_NV RGB |
CI0 RGB A TEXTURE0 EXPAND_NORMAL_NV RGB |
236 |
CI0 RGB B TEXTURE1 EXPAND_NORMAL_NV RGB |
CI0 RGB B TEXTURE1 EXPAND_NORMAL_NV RGB |
237 |
CO0 RGB SPARE0_NV DISCARD_NV DISCARD_NV NONE NONE TRUE FALSE FALSE |
CO0 RGB SPARE0_NV DISCARD_NV DISCARD_NV NONE NONE TRUE FALSE FALSE |
238 |
|
|
239 |
FCI A ZERO UNSIGNED_IDENTITY_NV RGB |
FCI A ZERO UNSIGNED_IDENTITY_NV RGB |
240 |
FCI B ZERO UNSIGNED_IDENTITY_NV RGB |
FCI B ZERO UNSIGNED_IDENTITY_NV RGB |
241 |
FCI C ZERO UNSIGNED_IDENTITY_NV RGB |
FCI C ZERO UNSIGNED_IDENTITY_NV RGB |
242 |
FCI D SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
FCI D SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
243 |
FCI G ZERO UNSIGNED_INVERT_NV ALPHA |
FCI G ZERO UNSIGNED_INVERT_NV ALPHA |
244 |
""") |
""") |
245 |
} |
} |
246 |
|
|
260 |
ActiveTexture TEXTURE0 |
ActiveTexture TEXTURE0 |
261 |
""") |
""") |
262 |
|
|
263 |
texid = ptextures["RGB2"][0].getTexId(); |
texid = ptextures["RGB2"][2].getTexId(); |
264 |
|
|
265 |
constcode = """ |
constcode = """ |
266 |
ActiveTexture TEXTURE0 |
ActiveTexture TEXTURE0 |
304 |
|
|
305 |
rng = java.util.Random() |
rng = java.util.Random() |
306 |
|
|
307 |
|
class PaperRegcombScene: |
308 |
|
pass |
309 |
|
|
310 |
class PaperScene: |
class PaperScene: |
311 |
def __init__(self): |
def __init__(self): |
393 |
tex1comb = list[(list.index(tex1comb) + 1) % len(list)] |
tex1comb = list[(list.index(tex1comb) + 1) % len(list)] |
394 |
print "Using", tex0comb, isectcomb, tex1comb, "combiners" |
print "Using", tex0comb, isectcomb, tex1comb, "combiners" |
395 |
self.initpaper() |
self.initpaper() |
396 |
elif k == "F2": |
elif k == "c": |
397 |
list = isectcodes.keys() |
list = isectcodes.keys() |
398 |
|
list.sort() |
399 |
isectcomb = list[(list.index(isectcomb) + 1) % len(list)] |
isectcomb = list[(list.index(isectcomb) + 1) % len(list)] |
400 |
print "Using", tex0comb, isectcomb, tex1comb, "combiners" |
print "Using", tex0comb, isectcomb, tex1comb, "combiners" |
401 |
self.initpaper() |
self.initpaper() |
402 |
|
elif k == "C": |
403 |
|
list = isectcodes.keys() |
404 |
|
list.sort() |
405 |
|
isectcomb = list[(list.index(isectcomb) - 1) % len(list)] |
406 |
|
print "Using", tex0comb, isectcomb, tex1comb, "combiners" |
407 |
|
self.initpaper() |
408 |
|
|
409 |
|
def scene(self, vs): |
410 |
|
if not self.pq: self.initpaper() |
411 |
|
putnoc(vs, background(self.bgcolor)) |
412 |
|
|
413 |
def scene(self, vs): |
def scene(self, vs): |
414 |
if not self.pq: self.initpaper() |
if not self.pq: self.initpaper() |
419 |
# and cs2 for the second |
# and cs2 for the second |
420 |
|
|
421 |
scale = 400 |
scale = 400 |
422 |
cs1 = vs.coords.affineCoordsys(0, "1", 10, self.x0, self.y0, |
cs1 = vs.coords.affineCoordsys(0, 10, self.x0, self.y0, |
423 |
scale * self.texgen0.vecs[0][0], |
scale * self.texgen0.vecs[0][0], |
424 |
scale * self.texgen0.vecs[1][0], |
scale * self.texgen0.vecs[1][0], |
425 |
scale * self.texgen0.vecs[0][1], |
scale * self.texgen0.vecs[0][1], |
426 |
scale * self.texgen0.vecs[1][1]) |
scale * self.texgen0.vecs[1][1]) |
427 |
cs2 = vs.coords.affineCoordsys(0, "2", 10, self.x1, self.y1, |
vs.matcher.add(cs1, "1") |
428 |
|
cs2 = vs.coords.affineCoordsys(0, 10, self.x1, self.y1, |
429 |
scale * self.texgen1.vecs[0][0], |
scale * self.texgen1.vecs[0][0], |
430 |
scale * self.texgen1.vecs[1][0], |
scale * self.texgen1.vecs[1][0], |
431 |
scale * self.texgen1.vecs[0][1], |
scale * self.texgen1.vecs[0][1], |
432 |
scale * self.texgen1.vecs[1][1]) |
scale * self.texgen1.vecs[1][1]) |
433 |
|
vs.matcher.add(cs2, "2") |
434 |
|
|
435 |
vs.map.put(self.pq, cs1, cs2) |
vs.map.put(self.pq, cs1, cs2) |
436 |
vs.map.put(self.frame, cs1) |
vs.map.put(self.frame, cs1) |
437 |
vs.map.put(self.frame, cs2) |
vs.map.put(self.frame, cs2) |
438 |
|
|
439 |
for i in range(0,3): |
for i in range(0,3): |
440 |
cs = vs.coords.affineCoordsys(0, "col" + str(i), 10, 600 + (i-1)*150, 80, 50, 0, 0, 50) |
cs = vs.coords.affineCoordsys(0, 10, 600 + (i-1)*150, 80, 50, 0, 0, 50) |
441 |
|
vs.matcher.add(cs, "col" + str(i)) |
442 |
col = self.cols[i].split() |
col = self.cols[i].split() |
443 |
cq = coloredQuad((col[0], col[1], col[2])) |
cq = coloredQuad((col[0], col[1], col[2])) |
444 |
vs.map.put(cq, cs) |
vs.map.put(cq, cs) |