12 |
rect = GLSpans.getRect(pis.getCurrent()) |
rect = GLSpans.getRect(pis.getCurrent()) |
13 |
|
|
14 |
class Scene: |
class Scene: |
15 |
|
def inv(self, *args): |
16 |
|
self.bias, self.sharpness = -self.bias, -self.sharpness |
17 |
|
print self.bias, self.sharpness |
18 |
def __init__(self): |
def __init__(self): |
19 |
|
|
20 |
self.scales = [ 1, 2, 4, 0, .5 ] |
self.scales = [ 1, 2, 4, 0, .5 ] |
21 |
|
self.textscales = [ 2, 4 ] |
22 |
self.key = KeyPresses(self, |
self.key = KeyPresses(self, |
23 |
SlideLin("x", 0, 30, "x coord", "Left", "Right"), |
SlideLin("x", 0, 30, "x coord", "Left", "Right"), |
24 |
SlideLin("y", 0, 30, "x coord", "Up", "Down"), |
SlideLin("y", 0, 30, "x coord", "Up", "Down"), |
26 |
SlideLin("yg", 0, 30, "x coord", "i", ","), |
SlideLin("yg", 0, 30, "x coord", "i", ","), |
27 |
SlideLog("ps", 800, "paper scale", "<", ">"), |
SlideLog("ps", 800, "paper scale", "<", ">"), |
28 |
SlideLin("ang", 0, 5, "angle", "Prior", "Next"), |
SlideLin("ang", 0, 5, "angle", "Prior", "Next"), |
29 |
SlideLin("sharpness", .75, .125, "sharpness", "-", "+"), |
SlideLin("sharpness", .5, .25, "sharpness", "-", "+"), |
30 |
SlideLin("bias", 1, .25, "LOD bias", "B", "b"), |
SlideLin("bias", 1, .25, "LOD bias", "B", "b"), |
31 |
ListIndex("scaleind", "scales", 0, "text halo scale", "S", "s"), |
ListIndex("scaleind", "scales", 0, "text halo scale", "S", "s"), |
32 |
|
ListIndex("tscaleind", "textscales", 0, "text scale", "D", "d"), |
33 |
Toggle("texfilt", 1, "texture filtering", "f"), |
Toggle("texfilt", 1, "texture filtering", "f"), |
34 |
|
|
35 |
|
|
36 |
|
Action("Invert biases", "t", self.inv, noAnimation=1), |
37 |
) |
) |
38 |
|
|
39 |
def scene(self, vs): |
def scene(self, vs): |
79 |
|
|
80 |
texid = rect.texId |
texid = rect.texId |
81 |
|
|
82 |
sharp = self.sharpness |
sharp = .5 + .5 * self.sharpness |
83 |
scale = self.scales[self.scaleind] |
scale = self.scales[self.scaleind] |
84 |
s = 1 |
s = 1 |
85 |
if scale == 0: |
if scale == 0: |
86 |
s = 0 |
s = 0 |
87 |
scale = 1 |
scale = 1 |
88 |
bias = self.bias |
bias = self.bias |
89 |
|
|
90 |
|
textscale = self.textscales[self.tscaleind] |
91 |
|
|
92 |
code = parseCombiner(""" |
code = parseCombiner(""" |
93 |
BindTexture TEXTURE_2D %(texid)s |
BindTexture TEXTURE_2D %(texid)s |
108 |
CONST0 = %(s)s %(s)s %(s)s %(sharp)s |
CONST0 = %(s)s %(s)s %(s)s %(sharp)s |
109 |
|
|
110 |
SPARE0 = ((1-TEX1) * CONST0) * %(scale)s |
SPARE0 = ((1-TEX1) * CONST0) * %(scale)s |
111 |
SPARE0.a = (CONST0.a * TEX0.b + (.5 - CONST0.a) * TEX1.b) * 2 |
SPARE0.a = (CONST0.a * (1-TEX0.b) + (.5 - CONST0.a) * (1-TEX1.b)) * %(textscale)s |
112 |
|
|
113 |
SPARE1.a = (1 - SPARE0.b) * SPARE0.a |
SPARE1.a = (1 - SPARE0.b) * (1-SPARE0.a) |
114 |
|
|
115 |
color = SPARE0.a * SPARE0 |
color = (1-SPARE0.a) * SPARE0 |
116 |
alpha = SPARE1.a |
alpha = SPARE1.a |
117 |
|
|
118 |
# a: text as 0 (SPARE0.a) |
# a: text as 1 (SPARE0.a) |
119 |
# b: text halo as 1 (SPARE0) |
# b: text halo as 1 (SPARE0) |
120 |
# bg = DST * (1 - b) + b |
# bg = DST * (1 - b) + b |
121 |
# blend = (1-a) * 0 + a * bg |
# blend = a * 0 + (1 - a) * bg |
122 |
# = a * b + a * (1 - b) * DST |
# = (1 - a) * b + (1 - a) * (1 - b) * DST |
123 |
|
|
124 |
Disable ALPHA_TEST |
Disable ALPHA_TEST |
125 |
Enable BLEND |
Enable BLEND |
138 |
#print code |
#print code |
139 |
vs.map.put(getDList(code), cs1) |
vs.map.put(getDList(code), cs1) |
140 |
|
|
141 |
|
print "HALO = TXB[%s] * %s" % (bias, self.scales[self.scaleind]) |
142 |
|
print "COL = (%s * TEX + %s * TXB[%s]) * %s" % (1 + self.sharpness, -self.sharpness, bias, self.textscales[self.tscaleind]*.5) |
143 |
|
print "BLEND = lerp( lerp(DST, 1, HALO), 0, COL )" |
144 |
|
|
145 |
|
|
146 |
currentScene = Scene() |
currentScene = Scene() |
147 |
|
|