26 |
texinputs = texinputs + texinputs |
texinputs = texinputs + texinputs |
27 |
t0, t1, t2, t3 = texinputs[0:4] |
t0, t1, t2, t3 = texinputs[0:4] |
28 |
|
|
29 |
|
#c0, c1, c2 = [ "1 1 1", "1 0 0", "0 0 0"] |
30 |
|
|
31 |
constantcode = """ |
constantcode = """ |
32 |
Enable BLEND |
Enable BLEND |
33 |
BlendFunc SRC_ALPHA ONE_MINUS_SRC_ALPHA |
BlendFunc SRC_ALPHA ONE_MINUS_SRC_ALPHA |
121 |
FCI F SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
FCI F SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
122 |
|
|
123 |
# lerp(EF, PRI_COL, SEC_COL) |
# lerp(EF, PRI_COL, SEC_COL) |
124 |
FCI A E_TIMES_F_NV UNSIGNED_IDENTITY_NV RGB |
FCI A E_TIMES_F_NV UNSIGNED_INVERT_NV RGB |
125 |
FCI B PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
FCI B PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
126 |
FCI C SECONDARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
FCI C SECONDARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
127 |
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
128 |
|
|
129 |
FCI G %(finalG)s UNSIGNED_INVERT_NV BLUE |
FCI G %(finalG)s UNSIGNED_INVERT_NV BLUE |
130 |
""") |
""") |
131 |
else: |
elif 1: |
132 |
# Interpolate between three colors: |
# Interpolate between three colors: |
133 |
# d0 = t0 . r0 |
# d0 = t0 . r0 |
134 |
# d1 = t1 . r1 |
# d1 = t1 . r1 |
153 |
|
|
154 |
# PRI_COL <- lerp(SPARE0, PRI_COL, SEC_COL) |
# PRI_COL <- lerp(SPARE0, PRI_COL, SEC_COL) |
155 |
CI1 RGB A PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
CI1 RGB A PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
156 |
CI1 RGB B SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
CI1 RGB B SPARE0_NV UNSIGNED_INVERT_NV RGB |
157 |
CI1 RGB C SECONDARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
CI1 RGB C SECONDARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
158 |
CI1 RGB D SPARE0_NV UNSIGNED_INVERT_NV RGB |
CI1 RGB D SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
159 |
CO1 RGB DISCARD_NV DISCARD_NV PRIMARY_COLOR_NV NONE NONE FALSE FALSE FALSE |
CO1 RGB DISCARD_NV DISCARD_NV PRIMARY_COLOR_NV NONE NONE FALSE FALSE FALSE |
160 |
|
|
161 |
# SPARE1.alpha <- SPARE0^2 - SPARE1^2 |
# SPARE1.alpha <- SPARE0^2 - SPARE1^2 |
166 |
CO1 ALPHA DISCARD_NV DISCARD_NV SPARE1_NV NONE NONE FALSE FALSE FALSE |
CO1 ALPHA DISCARD_NV DISCARD_NV SPARE1_NV NONE NONE FALSE FALSE FALSE |
167 |
|
|
168 |
# lerp(SPARE1, PRI_COL, FOG) |
# lerp(SPARE1, PRI_COL, FOG) |
169 |
FCI A SPARE1_NV UNSIGNED_IDENTITY_NV RGB |
FCI A SPARE1_NV UNSIGNED_INVERT_NV RGB |
170 |
FCI B PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
FCI B PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
171 |
FCI C FOG UNSIGNED_IDENTITY_NV RGB |
FCI C FOG UNSIGNED_IDENTITY_NV RGB |
172 |
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
173 |
|
|
174 |
FCI G %(finalG)s ALPHA |
FCI G %(finalG)s ALPHA |
175 |
""") |
""") |
176 |
|
else: |
177 |
|
# Interpolate on the fraction line c0,c1,c2: |
178 |
|
# d0 = t0 . t1 |
179 |
|
# c(d0) = |
180 |
|
# -1 -> c0 |
181 |
|
# 0 -> c1 |
182 |
|
# +1 -> c2 |
183 |
|
|
184 |
|
# lerp(d1, lerp(d0, c0, c1), c2) |
185 |
|
# The alpha value is computed as d0^2 - d1^2 |
186 |
|
|
187 |
|
if trans > 0: |
188 |
|
finalG = "SPARE1_NV UNSIGNED_IDENTITY_NV" |
189 |
|
else: |
190 |
|
finalG = "ZERO UNSIGNED_INVERT_NV" |
191 |
|
|
192 |
|
c = (""" |
193 |
|
# Fraction-line color interpolate |
194 |
|
|
195 |
|
# SPARE0 <- (TEX0 . TEX1) |
196 |
|
# SPARE1 <- -(TEX0 . TEX1) |
197 |
|
CI0 RGB A TEXTURE%(t0)s EXPAND_NORMAL_NV RGB |
198 |
|
CI0 RGB B TEXTURE%(t1)s EXPAND_NORMAL_NV RGB |
199 |
|
CI0 RGB A TEXTURE%(t0)s EXPAND_NEGATE_NV RGB |
200 |
|
CI0 RGB B TEXTURE%(t1)s EXPAND_NORMAL_NV RGB |
201 |
|
CO0 RGB SPARE0_NV SPARE1_NV DISCARD_NV NONE NONE TRUE TRUE FALSE |
202 |
|
|
203 |
|
# PRI_COL <- lerp(SPARE1, SEC_COL, PRI_COL) |
204 |
|
CI1 RGB A PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
205 |
|
CI1 RGB B SPARE1_NV UNSIGNED_INVERT_NV RGB |
206 |
|
CI1 RGB C SECONDARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
207 |
|
CI1 RGB D SPARE1_NV UNSIGNED_IDENTITY_NV RGB |
208 |
|
CO1 RGB DISCARD_NV DISCARD_NV PRIMARY_COLOR_NV NONE NONE FALSE FALSE FALSE |
209 |
|
|
210 |
|
# lerp(SPARE0, PRI_COL, FOG) |
211 |
|
FCI A SPARE0_NV UNSIGNED_INVERT_NV RGB |
212 |
|
FCI B PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB |
213 |
|
FCI C FOG UNSIGNED_IDENTITY_NV RGB |
214 |
|
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
215 |
|
|
216 |
|
# SPARE1.alpha <- t0.b * c0b + t1.b * c1.b |
217 |
|
CI1 ALPHA A TEXTURE%(t0)s EXPAND_NORMAL_NV BLUE |
218 |
|
CI1 ALPHA B CONSTANT_COLOR0_NV EXPAND_NORMAL_NV BLUE |
219 |
|
CI1 ALPHA C TEXTURE%(t1)s EXPAND_NORMAL_NV BLUE |
220 |
|
CI1 ALPHA B CONSTANT_COLOR1_NV EXPAND_NORMAL_NV BLUE |
221 |
|
CO1 ALPHA DISCARD_NV DISCARD_NV SPARE1_NV NONE NONE FALSE FALSE FALSE |
222 |
|
|
223 |
|
FCI G %(finalG)s ALPHA |
224 |
|
""") |
225 |
|
|
226 |
|
|
227 |
c = (constantcode + c) % locals() |
c = (constantcode + c) % locals() |