gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz/gfx/demo irregu3.py


From: Janne V. Kujala
Subject: [Gzz-commits] gzz/gfx/demo irregu3.py
Date: Mon, 28 Oct 2002 13:55:14 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Janne V. Kujala <address@hidden>        02/10/28 13:55:14

Modified files:
        gfx/demo       : irregu3.py 

Log message:
        cleanup

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/irregu3.py.diff?tr1=1.25&tr2=1.26&r1=text&r2=text

Patches:
Index: gzz/gfx/demo/irregu3.py
diff -u gzz/gfx/demo/irregu3.py:1.25 gzz/gfx/demo/irregu3.py:1.26
--- gzz/gfx/demo/irregu3.py:1.25        Mon Oct 28 09:19:46 2002
+++ gzz/gfx/demo/irregu3.py     Mon Oct 28 13:55:14 2002
@@ -41,8 +41,6 @@
         print "Using 2-vector HILO displacement texture with 
GL_NV_texture_shader"
 
         using_shader = 1
-        global use_stencil
-        #use_stencil = 0
         edgetex_inner = getCachedTexture(
             [1, edgetexsize, 0, 1, "ALPHA", "ALPHA", "irreguedge",
              ["line_width", "2",
@@ -173,8 +171,6 @@
 
         texenv = """
         TexEnv TEXTURE_ENV TEXTURE_ENV_MODE ADD
-        Enable ALPHA_TEST
-        AlphaFunc LESS 1
         """
         texenv_inner = texenv
         texenv_outer = texenv
@@ -201,11 +197,16 @@
                               ["irregu", args + ["invert", "1"]],
                               shade_all_levels = 1)
 
+    global reinit
+    reinit = 1
+
 
 
 init(profiles[0])
 
 def globalkey(k):
+    global reinit
+    
     if "F1" <= k <= "F4":
         global profiles
         init(profiles[int(k[1]) - 1])
@@ -215,18 +216,16 @@
     elif k == "t":
         global use_texture
         use_texture = not use_texture
-    elif k == "i":
-        global use_stencil
-        use_stencil = not use_stencil
+        reinit = 1
     global lodbias
-    if k == "b": lodbias += .25; print "lodbias", lodbias
-    elif k == "B": lodbias -= .25; print "lodbias", lodbias
+    if k == "b": lodbias += .25; print "lodbias", lodbias; reinit = 1
+    elif k == "B": lodbias -= .25; print "lodbias", lodbias; reinit = 1
     global edgelodbias
-    if k == "e": edgelodbias += .25; print "edgelodbias", edgelodbias
-    elif k == "E": edgelodbias -= .25; print "edgelodbias", edgelodbias
+    if k == "e": edgelodbias += .25; print "edgelodbias", edgelodbias; reinit 
= 1
+    elif k == "E": edgelodbias -= .25; print "edgelodbias", edgelodbias; 
reinit = 1
     global texscale
-    if k == "s": texscale *= 1.2; print "texscale", texscale
-    elif k == "S": texscale /= 1.2; print "texscale", texscale
+    if k == "s": texscale *= 1.2; print "texscale", texscale; reinit = 1
+    elif k == "S": texscale /= 1.2; print "texscale", texscale; reinit = 1
 
 
 # alpha(y) = e / y * f >= e
@@ -267,10 +266,10 @@
 
     angle = atan2(y1 - y0, x1 - x0) - texangle
 
-    dx = -cos(angle)
-    dy = -sin(angle)
-
     if using_shader:
+        dx = -cos(angle)
+        dy = -sin(angle)
+
         texcoords += [ [ (0, 0, 0),
                          (0, 0, 0),
                          (0, 0, striplen / texscale * edgetexsize),
@@ -299,7 +298,7 @@
     cols = [ colmap0(vec),
              colmap1(vec),
              colmap0(vec),
-             colmap1(vec)
+             colmap1(vec),
              ]
     
     code = """
@@ -323,16 +322,6 @@
         ActiveTexture TEXTURE0
         """ % edgelodbias
 
-    if use_stencil:
-        code += """
-        # Create edge stencil
-        ColorMask 0 0 0 0
-        StencilMask 255
-        Enable STENCIL_TEST
-        StencilFunc ALWAYS 0 255
-        StencilOp INCR INCR INCR
-        """
-
     if alphalevel:
         code += """
         Enable ALPHA_TEST
@@ -344,13 +333,6 @@
     else:
         code += texenv_inner % locals()
 
-    if outer and texenv_inner == texenv_outer:
-        code += """
-        PushMatrix
-        Translate %s
-        """ % js(vecmul(nvec[:3], 24. / scale))
-
-
     code += """
     Begin QUAD_STRIP
     """ % locals()
@@ -373,15 +355,9 @@
     code += """
     End
 
-    ColorMask 1 1 1 1
     PopAttrib
     """ 
 
-    if outer and texenv_inner == texenv_outer:
-        code += """
-        PopMatrix
-        """
-
     #print code
 
     return code
@@ -392,23 +368,96 @@
         self.angle = 0
         self.tx, self.ty = 0, 0
         self.bg = background((0.7,0.7,1.0))
-        
-    def scene(self, vs):
-        putnoc(vs, self.bg)
 
-        global scale
-        scale = self.scale
+        self.use_stencil = 1
 
-        cs3 = vs.coords.affineCoordsys(0, 0, 512, 384, self.scale, 0, 0, 
self.scale)
-       vs.matcher.add(cs3, "3")
+        self.stencil_init = getDListNocoords("""
+        # Create stencil
+        StencilMask 255
+        Enable STENCIL_TEST
+        StencilFunc ALWAYS 0 255
+        StencilOp INCR INCR INCR
+        ColorMask 0 0 0 0
+        """)
+
+        self.stencil_use = getDListNocoords("""
+        Enable STENCIL_TEST
+        StencilFunc EQUAL 0 255
+        StencilOp ZERO ZERO ZERO
+        ColorMask 1 1 1 1
+        """)
+
+        self.stencil_teardown = getDListNocoords("""
+        Disable STENCIL_TEST
+        """)
+
+
+    def initIrregu(self):
+        global reinit
+        if not reinit: return
+        reinit = 0
 
-        #texscale = 1
+        print "Creating new irregu"
 
         x0 = -1 - 0.5 * ripple_scale * texscale
         x1 = 1 + 0.5 * ripple_scale * texscale
         y0 = x0
         y1 = x1
 
+        texid = getCachedTexture([4, 4, 0, 3, "RGB", "RGB", "geometric",
+                                  ["type", "1", "scale", ".25", "bias", 
".75"]]).getTexId()
+
+        if use_texture:
+            tex2d = "Enable"
+        else:
+            tex2d = "Disable"
+
+
+        paint = """
+        PushAttrib ENABLE_BIT
+        Disable ALPHA_TEST
+        %(tex2d)s TEXTURE_2D
+        BindTexture TEXTURE_2D %(texid)s
+        TexParameter TEXTURE_2D TEXTURE_MIN_FILTER NEAREST
+        TexParameter TEXTURE_2D TEXTURE_MAG_FILTER NEAREST
+        #TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
+        Begin QUAD_STRIP
+        TexCoord 0 0
+        Vertex %(x0)s %(y0)s
+        TexCoord 2.25 0
+        Vertex %(x1)s %(y0)s
+        TexCoord 0 2.25
+        Vertex %(x0)s %(y1)s
+        TexCoord 2.25 2.25
+        Vertex %(x1)s %(y1)s
+        End 
+        PopAttrib
+        """ % locals()
+
+        self.outer_paint = getDList("Color 0 0 0" + paint)
+
+        self.inner_paint = getDList("Color 1 1 1" + paint)
+
+        self.outer_edge = getDList(
+            getIrregu(0,x0,-1,x1,-1,1, texscale, self.angle) +
+            getIrregu(0,+1,y0,+1,y1,1, texscale, self.angle) +
+            getIrregu(1,x1,+1,x0,+1,1, texscale, self.angle) +
+            getIrregu(1,-1,y1,-1,y0,1, texscale, self.angle))
+        
+        self.inner_edge = getDList(
+            getIrregu(0,x0,-1,x1,-1,0, texscale, self.angle) +
+            getIrregu(0,+1,y0,+1,y1,0, texscale, self.angle) +
+            getIrregu(1,x1,+1,x0,+1,0, texscale, self.angle) +
+            getIrregu(1,-1,y1,-1,y0,0, texscale, self.angle))
+        
+    def scene(self, vs):
+        putnoc(vs, self.bg)
+
+        global scale
+        scale = self.scale
+
+        cs3 = vs.coords.affineCoordsys(0, 0, 512, 384, self.scale, 0, 0, 
self.scale)
+       vs.matcher.add(cs3, "3")
         
         cs4 = vs.coords.affineCoordsys(0, 0,
                                        self.tx * cos(self.angle) +
@@ -420,73 +469,80 @@
         vs.matcher.add(cs4, "4")
         vs.map.put(GLRen.createTextureMatrix(), cs4)
 
-        texid = getCachedTexture([4, 4, 0, 3, "RGB", "RGB", "geometric",
-                                  ["type", "1", "scale", ".25", "bias", 
".75"]]).getTexId()
-
-        if use_texture:
-            tex2d = "Enable"
-        else:
-            tex2d = "Disable"
-
-        if use_stencil:
-            paint = """
-            PushAttrib ENABLE_BIT
-            Enable STENCIL_TEST
-            Disable ALPHA_TEST
-            StencilFunc EQUAL 0 255
-            StencilOp ZERO ZERO ZERO
-            %(tex2d)s TEXTURE_2D
-            BindTexture TEXTURE_2D %(texid)s
-            TexParameter TEXTURE_2D TEXTURE_MIN_FILTER NEAREST
-            TexParameter TEXTURE_2D TEXTURE_MAG_FILTER NEAREST
-            #TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
-            Begin QUAD_STRIP
-            TexCoord 0 0
-            Vertex %(x0)s %(y0)s
-            TexCoord 2.25 0
-            Vertex %(x1)s %(y0)s
-            TexCoord 0 2.25
-            Vertex %(x0)s %(y1)s
-            TexCoord 2.25 2.25
-            Vertex %(x1)s %(y1)s
-            End 
-            PopAttrib
-            """ % locals()
-        else:
-            paint = """
-            """
-
         vs.map.put(getDListNocoords("""
             PushMatrix
-
             MultMatrix  %s
         """ % matrices[0]))
 
-        if use_stencil:
-            vs.map.put(getDList(getIrregu(0,x0,-1,x1,-1,1, texscale, 
self.angle) +
-                                getIrregu(0,+1,y0,+1,y1,1, texscale, 
self.angle) +
-                                getIrregu(1,x1,+1,x0,+1,1, texscale, 
self.angle) +
-                                getIrregu(1,-1,y1,-1,y0,1, texscale, 
self.angle) +
-                                "Color 0 0 0" + paint), cs3)
-
-        vs.map.put(getDList(getIrregu(0,x0,-1,x1,-1,0, texscale, self.angle) +
-                            getIrregu(0,+1,y0,+1,y1,0, texscale, self.angle) +
-                            getIrregu(1,x1,+1,x0,+1,0, texscale, self.angle) +
-                            getIrregu(1,-1,y1,-1,y0,0, texscale, self.angle) +
-                            "Color 1 1 1" + paint), cs3)
+        self.initIrregu()
+
+        if self.use_stencil:
+            if texenv_inner == texenv_outer:
+                vs.map.put(getDListNocoords("PushMatrix\n"
+                                            "Translate -2 0 0"))
+                vs.map.put(self.stencil_init)
+                vs.map.put(self.outer_edge, cs3)
+                vs.map.put(self.stencil_use)
+                vs.map.put(self.outer_paint, cs3)
+                vs.map.put(self.stencil_teardown)
+
+                vs.map.put(getDListNocoords("Translate 4 0 0"))
+                vs.map.put(self.stencil_init)
+                vs.map.put(self.outer_edge, cs3)
+                vs.map.put(self.stencil_use)
+                vs.map.put(self.outer_paint, cs3)
+                vs.map.put(self.stencil_teardown)
+
+                vs.map.put(getDListNocoords("Translate -2 -2 0"))
+                vs.map.put(self.stencil_init)
+                vs.map.put(self.outer_edge, cs3)
+                vs.map.put(self.stencil_use)
+                vs.map.put(self.outer_paint, cs3)
+                vs.map.put(self.stencil_teardown)
+
+                vs.map.put(getDListNocoords("Translate 0 4 0"))
+                vs.map.put(self.stencil_init)
+                vs.map.put(self.outer_edge, cs3)
+                vs.map.put(self.stencil_use)
+                vs.map.put(self.outer_paint, cs3)
+                vs.map.put(self.stencil_teardown)
+                
+                vs.map.put(getDListNocoords("PopMatrix"))
+            else:
+                vs.map.put(self.stencil_init)
+                vs.map.put(self.outer_edge, cs3)
+                vs.map.put(self.stencil_use)
+                vs.map.put(self.outer_paint, cs3)
+                vs.map.put(self.stencil_teardown)
+
+            vs.map.put(self.stencil_init)
+        if 1:
+            vs.map.put(self.inner_edge, cs3)
+        if self.use_stencil:
+            vs.map.put(self.stencil_use)
+            vs.map.put(self.inner_paint, cs3)
+            vs.map.put(self.stencil_teardown)
+
+
 
         vs.map.put(getDListNocoords("""
             PopMatrix
         """))
 
     def key(self, k):
+        global reinit
+        
         if k == "+": self.scale *= 1.4142135623731; print round(self.scale)
         if k == "-": self.scale /= 1.4142135623731; print round(self.scale)
 
         if k == "Prior":
             self.angle -= pi/180; print "angle",round(self.angle / pi * 180)
+            reinit = 1
         if k == "Next":
             self.angle += pi/180; print "angle",round(self.angle / pi * 180)
+            reinit = 1
+
+        if k == "i": self.use_stencil = not self.use_stencil
             
         if k == "Up": self.ty -= .1
         if k == "Down": self.ty += .1




reply via email to

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