gzz-commits
[Top][All Lists]
Advanced

[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
        """))
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]