[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz/gfx/demo gldemo.py softshadow.py
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] gzz/gfx/demo gldemo.py softshadow.py |
Date: |
Sun, 24 Nov 2002 16:12:41 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Tuomas J. Lukka <address@hidden> 02/11/24 16:12:41
Modified files:
gfx/demo : gldemo.py softshadow.py
Log message:
Towards better soft shadowing...
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/gldemo.py.diff?tr1=1.49&tr2=1.50&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/softshadow.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
Patches:
Index: gzz/gfx/demo/gldemo.py
diff -u gzz/gfx/demo/gldemo.py:1.49 gzz/gfx/demo/gldemo.py:1.50
--- gzz/gfx/demo/gldemo.py:1.49 Sat Nov 23 14:03:35 2002
+++ gzz/gfx/demo/gldemo.py Sun Nov 24 16:12:40 2002
@@ -46,24 +46,25 @@
return "BindTexture TEXTURE_2D %s"%texid
return ""
-def coloredQuad(rgb, texid=None):
+def coloredQuad(rgb, texid=None, texcoord1 = 1):
texcode = texbindcode(texid)
+ r,g,b = rgb
return getDList("""
PushAttrib TEXTURE_BIT
"""+texcode+"""
- Color %s %s %s
+ Color %(r)s %(g)s %(b)s
Begin QUADS
TexCoord 0 0
Vertex 0 0
- TexCoord 0 1
+ TexCoord 0 %(texcoord1)s
Vertex 0 1
- TexCoord 1 1
+ TexCoord %(texcoord1)s %(texcoord1)s
Vertex 1 1
- TexCoord 1 0
+ TexCoord %(texcoord1)s 0
Vertex 1 0
End
PopAttrib
- """%(rgb))
+ """%locals())
def quad(texid=None):
texcode = texbindcode(texid)
Index: gzz/gfx/demo/softshadow.py
diff -u gzz/gfx/demo/softshadow.py:1.3 gzz/gfx/demo/softshadow.py:1.4
--- gzz/gfx/demo/softshadow.py:1.3 Sun Nov 24 09:43:23 2002
+++ gzz/gfx/demo/softshadow.py Sun Nov 24 16:12:40 2002
@@ -1,4 +1,11 @@
from __future__ import nested_scopes
+from gfx.libutil import effects, nvcode
+from gfx.libpaper.texcache import getCachedTexture
+
+noise = getCachedTexture(
+ [ 512, 512, 0, 2, "DSDT_NV", "DSDT_NV", "geometric",
+ ["type","7","scale","2", "bias", "-1","seed","42"]],
+ shade_all_levels = 1)
w.setLocation(0,0,1024,1024)
@@ -7,17 +14,17 @@
class Rects :
def drawScene(self, vs, seed):
vs.map.put(background((.3, .6, .7)))
- depths = (-500, 500, 1000, 2000)
+ depths = (-5000, 500, 2000, 4000)
gen = java.util.Random(seed)
def r(s=1):
return s * gen.nextDouble()
- vs.put(coloredQuad((.3,.7,.8)), "BG", depths[3], 0, 0, 1200, 1200)
+ vs.put(coloredQuad((.3,.7,.8), texcoord1=10), "BG", depths[3], 0, 0,
1200, 1200)
# self.draw(vs, (.3,.7,.8), depths, depths[3], 0, 0, 1200, 1200)
- self.draw(vs, (0,1,0), depths, depths[2], r(440), r(450), r(300)+100,
r(400)+100)
- self.draw(vs, (1,0,0), depths, depths[1], r(450), r(450), r(300)+100,
r(400)+100)
- self.draw(vs, (0,0,1), depths, depths[0], r(400), r(400), r(400)+100,
r(300)+100)
+ self.draw(vs, (0,1,0.5), depths, depths[2], r(440), r(450), r(300)+100,
r(400)+100)
+ self.draw(vs, (1,0.5,0), depths, depths[1], r(450), r(450), r(300)+100,
r(400)+100)
+ self.draw(vs, (0.5,0,1), depths, depths[0], r(400), r(400), r(400)+100,
r(300)+100)
def key(self, key):
pass
@@ -84,20 +91,30 @@
class SBScene(Rects):
def __init__(self):
self.tex = GL.createTexture()
+ self.dtex = GL.createTexture()
for l in range(0,5):
- self.tex.loadNull2D(l, "DEPTH_COMPONENT24_SGIX", ts/2**l, ts/2**l,
0, "DEPTH_COMPONENT", "UNSIGNED_SHORT")
+ self.tex.loadNull2D(l, "RGB", ts/2**l, ts/2**l, 0, "RGB",
"UNSIGNED_SHORT")
+ self.dtex.loadNull2D(l, "DEPTH_COMPONENT16_SGIX", ts/2**l, ts/2**l,
0, "DEPTH_COMPONENT", "UNSIGNED_SHORT")
+ self.texoffs = GL.createTexture()
self.drawshad = 1
self.seed = 0
- self.shift = (-.02, .01)
+ self.usedepth = 0
+ self.shift = (-.005, .01)
self.vob = getDList("""
+ ActiveTexture TEXTURE0
Begin TRIANGLES
+ TexCoord 0 0
Vertex 0 0 0
+ TexCoord 1 0
Vertex 1 0 0
+ TexCoord 0 1
Vertex 0 1 00
End
""")
# self.tex.loadNull2D(0, "RGB", ts, ts, 0, "RGB", "UNSIGNED_SHORT")
def key(self, key):
+ if key == "d":
+ self.usedepth = not self.usedepth
if key == "s":
self.drawshad = not self.drawshad
if key == "+":
@@ -127,31 +144,75 @@
PopMatrix
"""))
print "WH: ", int(ts*fact)
+
texim = GLRen.createCopyTexSubImage2D(
"TEXTURE_2D", level, 0, 0, int(ts * fact), int(ts *
fact))
vs.map.put(texim, vs.orthoCS(0, str(("dept_",level)), 0, 0, ts * fact,
1, 1))
+
def scene(self, vs):
- texid = self.tex.getTexId()
+ if self.usedepth:
+ texid = self.dtex.getTexId()
+ else:
+ texid = self.tex.getTexId()
+ # texidoffs = self.texoffs.getTexId()
+ texidoffs = noise.getTexId()
+
+ vs.map.put(getDListNocoords("""
+ ActiveTexture TEXTURE0
+ BindTexture TEXTURE_2D %(texid)s
+ """ % locals()))
+
+ if 1:
+ self.drawShadowLevel(vs, 0)
+ self.drawShadowLevel(vs, 1)
+ self.drawShadowLevel(vs, 2)
+ self.drawShadowLevel(vs, 3)
+ self.drawShadowLevel(vs, 4)
+ shif = -self.shift[0]
+
+ offssize = .01
+
vs.map.put(getDListNocoords("""
PushAttrib TEXTURE_BIT ENABLE_BIT
+ Enable TEXTURE_SHADER_NV
+
ActiveTexture TEXTURE0
+ BindTexture TEXTURE_2D %(texidoffs)s
+ TexParameter TEXTURE_2D TEXTURE_MAX_LEVEL 12
+ TexParameter TEXTURE_2D TEXTURE_BASE_LEVEL 1
+ TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR
+ TexEnv TEXTURE_FILTER_CONTROL_EXT TEXTURE_LOD_BIAS_EXT -10
+ TexParameter TEXTURE_2D TEXTURE_MAX_LOD 9
+ TexParameter TEXTURE_2D TEXTURE_MIN_LOD 0
+ TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 10
+
+# TexImage2D TEXTURE_2D 0 DSDT_NV 2 2 0 DSDT_NV -.1 -.1 .1 .1 -.1 .1
.1 -.1
+# TexImage2D TEXTURE_2D 0 HILO_NV 2 2 0 HILO_NV -1 -1 1 1 -1 1 1 -1
+
+ TexEnv TEXTURE_SHADER_NV SHADER_OPERATION_NV TEXTURE_2D
+
+
+ ActiveTexture TEXTURE1
BindTexture TEXTURE_2D %(texid)s
TexParameter TEXTURE_2D TEXTURE_MAX_LEVEL 4
- TexParameter TEXTURE_2D TEXTURE_MAX_LOD 3.5
- TexParameter TEXTURE_2D TEXTURE_MIN_LOD 3.5
+# TexParameter TEXTURE_2D TEXTURE_MAX_LOD 3.5
+# TexParameter TEXTURE_2D TEXTURE_MIN_LOD 0.5
- TexParameter TEXTURE_2D TEXTURE_COMPARE_SGIX TRUE
- TexParameter TEXTURE_2D TEXTURE_COMPARE_OPERATOR_SGIX
TEXTURE_LEQUAL_R_SGIX
- TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 1
+ TexParameter TEXTURE_2D TEXTURE_COMPARE_SGIX FALSE
+# TexParameter TEXTURE_2D TEXTURE_COMPARE_OPERATOR_SGIX
TEXTURE_LEQUAL_R_SGIX
+ TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 10
TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR
+ TexParameter TEXTURE_2D TEXTURE_MIN_FILTER NEAREST
+
+ TexEnv TEXTURE_SHADER_NV PREVIOUS_TEXTURE_INPUT_NV TEXTURE0
+ TexEnv TEXTURE_SHADER_NV OFFSET_TEXTURE_MATRIX_NV %(offssize)s 0 0
%(offssize)s
+ TexEnv TEXTURE_SHADER_NV SHADER_OPERATION_NV TEXTURE_2D
+ TexEnv TEXTURE_SHADER_NV SHADER_OPERATION_NV OFFSET_TEXTURE_2D_NV
+# TexEnv TEXTURE_SHADER_NV SHADER_OPERATION_NV
OFFSET_HILO_TEXTURE_2D_NV
+
""" % locals()))
- self.drawShadowLevel(vs, 0)
- self.drawShadowLevel(vs, 1)
- self.drawShadowLevel(vs, 2)
- self.drawShadowLevel(vs, 3)
- self.drawShadowLevel(vs, 4)
- shif = -self.shift[0]
+
vs.map.put(getDListNocoords("""
PushMatrix
@@ -160,7 +221,7 @@
%(shif)s %(shif)s 1 0 \
0 0 0 1
""" % locals()))
- vs.put(getDList("""
+ vs.put(getDList( """
Enable TEXTURE_2D
TexGen S TEXTURE_GEN_MODE EYE_LINEAR
TexGen T TEXTURE_GEN_MODE EYE_LINEAR
@@ -177,7 +238,24 @@
ActiveTexture TEXTURE0
Enable BLEND
Color 1 1 1 .25
+ Enable REGISTER_COMBINERS_NV
"""% locals()), "TEXGEN", 0, 0, ts, ts, -ts)
+ if self.usedepth:
+ vs.map.put(getDListNocoords(
+ nvcode.parseCombiner("""
+ SPARE0 = COL0*(TEX1.a)
+ alpha=1
+ color = SPARE0
+ """)
+ ))
+ else:
+ vs.map.put(getDListNocoords(
+ nvcode.parseCombiner("""
+ SPARE0 = COL0*(TEX1-.5)
+ alpha=1
+ color = SPARE0
+ """)
+ ))
vs.map.put(getDListNocoords("""
PopMatrix
"""))
@@ -187,6 +265,12 @@
self.drawScene(vs, self.seed)
vs.map.put(getDListNocoords("""
PopAttrib
+ Disable TEXTURE_SHADER_NV
+ ActiveTexture TEXTURE1
+ BindTexture TEXTURE_2D 0
+ ActiveTexture TEXTURE2
+ BindTexture TEXTURE_2D 0
+ ActiveTexture TEXTURE0
"""))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz/gfx/demo gldemo.py softshadow.py,
Tuomas J. Lukka <=