1 |
from gfx.libutil import effects |
from gfx.libutil import effects, nvcode |
2 |
|
|
3 |
c = java.util.Random() |
c = java.util.Random() |
4 |
|
|
5 |
|
ts = 512 |
6 |
|
|
7 |
class BlurScene: |
class BlurScene: |
8 |
def __init__(self): |
def __init__(self): |
9 |
self.bv = GL.createByteVector(1024 * 768 * 4) |
self.bv = GL.createByteVector(1024 * 768 * 4) |
10 |
self.f = effects.IrreguFrame(0, 0, 1000, 1000, 20, 200) |
self.f = effects.IrreguFrame(0, 0, 1000, 1000, 20, 200) |
11 |
|
self.tex = GL.createTexture() |
12 |
|
self.tex.loadNull2D(0, "RGBA", ts, ts, 0, "RGBA", "UNSIGNED_BYTE") |
13 |
def key(self, key): |
def key(self, key): |
14 |
pass |
pass |
15 |
def scene(self, vs): |
def scene(self, vs): |
16 |
vs.map.put(background((0, .1, 0))) |
vs.map.put(background((0, .1, 0))) |
17 |
|
|
18 |
sx = 300 |
sx = ts |
19 |
sy = 300 |
sy = ts |
20 |
|
|
21 |
|
|
22 |
f1cs = vs.orthoCS(0, "X", 50, 100*c.nextDouble(), 100*c.nextDouble(), 200, 100) |
f1cs = vs.orthoCS(0, "X", 50, 100*c.nextDouble(), 100*c.nextDouble(), 200, 100) |
30 |
vs.put(coloredQuad((1,1,1)), "C", 1000, 180*c.nextDouble(), 180*c.nextDouble(), 200, 100) |
vs.put(coloredQuad((1,1,1)), "C", 1000, 180*c.nextDouble(), 180*c.nextDouble(), 200, 100) |
31 |
|
|
32 |
vs.map.put(getDListNocoords(""" |
vs.map.put(getDListNocoords(""" |
33 |
PushAttrib CURRENT_BIT COLOR_BUFFER_BIT DEPTH_BUFFER_BIT ENABLE_BIT PIXEL_MODE_BIT |
PushAttrib CURRENT_BIT COLOR_BUFFER_BIT DEPTH_BUFFER_BIT ENABLE_BIT PIXEL_MODE_BIT TEXTURE_BIT |
34 |
Disable ALPHA_TEST |
Disable ALPHA_TEST |
35 |
Disable BLEND |
Disable BLEND |
36 |
ReadBuffer BACK |
ReadBuffer BACK |
61 |
1 0 0 1 |
1 0 0 1 |
62 |
Enable POST_CONVOLUTION_COLOR_TABLE |
Enable POST_CONVOLUTION_COLOR_TABLE |
63 |
Disable POST_CONVOLUTION_COLOR_TABLE |
Disable POST_CONVOLUTION_COLOR_TABLE |
64 |
""")) |
|
65 |
|
BindTexture TEXTURE_2D %(tex)s |
66 |
|
TexParameter TEXTURE_2D TEXTURE_MAX_LEVEL 0 |
67 |
|
Enable TEXTURE_2D |
68 |
|
""" % { |
69 |
|
"tex": self.tex.getTexId(), |
70 |
|
})) |
71 |
|
|
72 |
cs = vs.orthoCS(0, "dp", 0, 20, sy+10, 1, 1) |
cs = vs.orthoCS(0, "dp", 0, 20, sy+10, 1, 1) |
73 |
cs2 = vs.orthoCS(0, "dp2", 300, 300, sy+10, 1, 1) |
cs2 = vs.orthoCS(0, "dp2", 300, 300, sy+10, sx, sy) |
74 |
if 1: |
if 1: |
75 |
getp = GLRen.createReadPixels(sx, sy, |
getp = GLRen.createReadPixels(sx, sy, |
76 |
|
"DEPTH_COMPONENT", "UNSIGNED_SHORT", self.bv) |
77 |
|
texim = GLRen.createTexSubImage2D("TEXTURE_2D", 0, 0, 0, ts, ts, |
78 |
|
"RGBA", "UNSIGNED_SHORT_4_4_4_4", self.bv) |
79 |
|
|
80 |
|
vs.map.put(getp, cs) |
81 |
|
vs.map.put(texim) |
82 |
|
|
83 |
|
# vs.map.put(coloredQuad((1,0,0)), cs2) |
84 |
|
|
85 |
|
vs.map.put(getDListNocoords(nvcode.combinercode(""" |
86 |
|
BindTexture TEXTURE_2D %(tex)s |
87 |
|
PushAttrib TEXTURE_BIT |
88 |
|
TexGen S TEXTURE_GEN_MODE OBJECT_LINEAR |
89 |
|
TexGen S OBJECT_PLANE 1 0 0 -300 |
90 |
|
TexGen T TEXTURE_GEN_MODE OBJECT_LINEAR |
91 |
|
TexGen T OBJECT_PLANE 0 1 0 -300 |
92 |
|
Enable TEXTURE_GEN_S |
93 |
|
Enable TEXTURE_GEN_T |
94 |
|
|
95 |
|
ActiveTexture TEXTURE1 |
96 |
|
BindTexture TEXTURE_2D %(tex)s |
97 |
|
Enable TEXTURE_2D |
98 |
|
TexGen S TEXTURE_GEN_MODE OBJECT_LINEAR |
99 |
|
TexGen S OBJECT_PLANE 1 0 0 -300.005 |
100 |
|
TexGen T TEXTURE_GEN_MODE OBJECT_LINEAR |
101 |
|
TexGen T OBJECT_PLANE 0 1 0 -300.005 |
102 |
|
Enable TEXTURE_GEN_S |
103 |
|
Enable TEXTURE_GEN_T |
104 |
|
|
105 |
|
TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE |
106 |
|
|
107 |
|
ActiveTexture TEXTURE0 |
108 |
|
|
109 |
|
Enable REGISTER_COMBINERS_NV |
110 |
|
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2 |
111 |
|
|
112 |
|
# Calculate Tex0 - Tex1 |
113 |
|
CI0 RGB A TEXTURE0 UNSIGNED_IDENTITY_NV RGB |
114 |
|
CI0 RGB B ZERO UNSIGNED_INVERT_NV RGB |
115 |
|
CI0 RGB C TEXTURE1 UNSIGNED_IDENTITY_NV RGB |
116 |
|
CI0 RGB D ZERO EXPAND_NORMAL_NV RGB |
117 |
|
CO0 RGB DISCARD_NV DISCARD_NV SPARE0_NV SCALE_BY_FOUR_NV NONE FALSE FALSE FALSE |
118 |
|
|
119 |
|
CI1 RGB A SPARE0_NV SIGNED_IDENTITY_NV RGB |
120 |
|
CI1 RGB B SPARE0_NV SIGNED_IDENTITY_NV RGB |
121 |
|
CO1 RGB SPARE0_NV DISCARD_NV DISCARD_NV SCALE_BY_FOUR_NV NONE TRUE FALSE FALSE |
122 |
|
|
123 |
|
FCI A SPARE0_NV UNSIGNED_IDENTITY_NV RGB |
124 |
|
FCI B ZERO UNSIGNED_INVERT_NV RGB |
125 |
|
FCI C ZERO UNSIGNED_IDENTITY_NV RGB |
126 |
|
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
127 |
|
|
128 |
|
""" % { |
129 |
|
"tex" : self.tex.getTexId() |
130 |
|
}))) |
131 |
|
vs.map.put(quad(), cs2) |
132 |
|
vs.map.put(getDListNocoords(""" |
133 |
|
PopAttrib |
134 |
|
""")) |
135 |
|
elif 1: |
136 |
|
getp = GLRen.createReadPixels(sx, sy, |
137 |
"RGBA", "UNSIGNED_BYTE", self.bv) |
"RGBA", "UNSIGNED_BYTE", self.bv) |
138 |
putp = GLRen.createDrawPixels(sx, sy, |
putp = GLRen.createDrawPixels(sx, sy, |
139 |
"RGBA", "UNSIGNED_BYTE", self.bv) |
"RGBA", "UNSIGNED_BYTE", self.bv) |