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: Thu, 24 Oct 2002 11:08:29 -0400

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Janne V. Kujala <address@hidden>        02/10/24 11:08:29

Modified files:
        gfx/demo       : irregu3.py 

Log message:
        Add register combiners version with full displacement resolution

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

Patches:
Index: gzz/gfx/demo/irregu3.py
diff -u gzz/gfx/demo/irregu3.py:1.16 gzz/gfx/demo/irregu3.py:1.17
--- gzz/gfx/demo/irregu3.py:1.16        Thu Oct 24 07:36:25 2002
+++ gzz/gfx/demo/irregu3.py     Thu Oct 24 11:08:29 2002
@@ -3,8 +3,86 @@
 ripple_scale = .25
 size = 128
 
+if (GL.hasExtension("GL_NV_register_combiners") and
+    GL.hasExtension("GL_EXT_secondary_color")):
+
+    print "Using full displacement resolution textures with 
GL_NV_register_combiners"
+    
+    from gfx.libutil.nvcode import combinercode
+    texenv_outer = combinercode("""
+    SecondaryColorEXT %(dotvec)s
+
+    Enable REGISTER_COMBINERS_NV
+    CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2
+    
+    # Compute TEXTURE . SECONDARY_COLOR dot product
+    CI0 RGB A TEXTURE0 UNSIGNED_IDENTITY_NV RGB
+    CI0 RGB B SECONDARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB
+    CO0 RGB SPARE0_NV DISCARD_NV DISCARD_NV NONE NONE TRUE FALSE FALSE
+
+    # Add PRIMARY_COLOR
+    CI1 RGB A SPARE0_NV UNSIGNED_IDENTITY_NV RGB
+    CI1 RGB B ZERO UNSIGNED_INVERT_NV RGB
+    CI1 RGB C PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV RGB
+    CI1 RGB D ZERO UNSIGNED_INVERT_NV RGB
+    CO1 RGB DISCARD_NV DISCARD_NV SPARE0_NV NONE NONE FALSE FALSE FALSE
+
+    # Use as alpha
+    FCI G SPARE0_NV UNSIGNED_IDENTITY_NV BLUE
+    """)
+
+    texenv_inner = combinercode("""
+    SecondaryColorEXT 0 0 0
+
+    Enable REGISTER_COMBINERS_NV
+    CombinerParameterNV NUM_GENERAL_COMBINERS_NV 1
+
+    CI0 ALPHA A TEXTURE0 UNSIGNED_IDENTITY_NV ALPHA
+    CI0 ALPHA B ZERO UNSIGNED_INVERT_NV ALPHA
+    CI0 ALPHA C PRIMARY_COLOR_NV UNSIGNED_IDENTITY_NV BLUE
+    CI0 ALPHA D ZERO UNSIGNED_INVERT_NV ALPHA
+    CO0 ALPHA DISCARD_NV DISCARD_NV SPARE0_NV NONE NONE FALSE FALSE FALSE
+
+    FCI G SPARE0_NV UNSIGNED_IDENTITY_NV ALPHA
+    """)
+
+    tex_scale = 1
+    tex_bias = 0
+    alphalevel = 1
+    w0,w1 = 1,1
+
+    def colmap0(dotvec): return "1 1 1"
+    def colmap1(dotvec): return "0 0 0"
+
+elif GL.hasExtension("GL_EXT_texture_env_dot3"):
+
+    print "Using 1/4 displacement resolution textures with 
GL_EXT_texture_env_dot3"
+    
+    texenv = """
+    Hint PERSPECTIVE_CORRECTION_HINT NICEST
+    TexEnv TEXTURE_ENV TEXTURE_ENV_MODE COMBINE_EXT
+    TexEnv TEXTURE_ENV COMBINE_RGB_EXT DOT3_RGBA_EXT
+    TexEnv TEXTURE_ENV SOURCE0_RGB_EXT TEXTURE
+    TexEnv TEXTURE_ENV OPERAND0_RGB_EXT %s
+    TexEnv TEXTURE_ENV SOURCE1_RGB_EXT PREVIOUS_EXT
+    TexEnv TEXTURE_ENV OPERAND1_RGB_EXT SRC_COLOR
+    """
+    texenv_inner = texenv % "SRC_ALPHA"
+    texenv_outer = texenv % "SRC_COLOR"
+    
+    tex_scale = .25
+    tex_bias = .75
+    alphalevel = .5
+    w0,w1 = 1,.5
+
+    def colmap0(dotvec): return js([.5 + .5 * c for c in dotvec])
+    def colmap1(dotvec): return js([.5 + .25 * c for c in dotvec])
+else:
+    assert(0)
+
+
 args = ["radius", "2", "ripple_scale", str(ripple_scale),
-        "scale", ".25", "bias", ".75", "eps", ".125"]
+        "scale", str(tex_scale), "bias", str(tex_bias), "eps", ".125"]
 
 tex = GL.createTexture()
 texinv = GL.createTexture()
@@ -32,15 +110,15 @@
     m = 0.5 * ripple_scale * texscale / len
     vec = (m * (y1 - y0), -m * (x1 - x0), 0, 0) # cw90
 
-    vert0 = js(vecmul(vecsub((x0,y0,0,1),vec), 1))
-    vert1 = js(vecmul(vecadd((x0,y0,0,1),vec), .5))
-    vert2 = js(vecmul(vecsub((x1,y1,0,1),vec), 1))
-    vert3 = js(vecmul(vecadd((x1,y1,0,1),vec), .5))
-
-    tex0 = js(vecmul((x0,y0,0,texscale), 1))
-    tex1 = js(vecmul((x0,y0,0,texscale), .5))
-    tex2 = js(vecmul((x1,y1,0,texscale), 1))
-    tex3 = js(vecmul((x1,y1,0,texscale), .5))
+    vert0 = js(vecmul(vecsub((x0,y0,0,1),vec), w0))
+    vert1 = js(vecmul(vecadd((x0,y0,0,1),vec), w1))
+    vert2 = js(vecmul(vecsub((x1,y1,0,1),vec), w0))
+    vert3 = js(vecmul(vecadd((x1,y1,0,1),vec), w1))
+
+    tex0 = js(vecmul((x0,y0,0,texscale), w0))
+    tex1 = js(vecmul((x0,y0,0,texscale), w1))
+    tex2 = js(vecmul((x1,y1,0,texscale), w0))
+    tex3 = js(vecmul((x1,y1,0,texscale), w1))
 
     #print "Vertices:"
     #print vert0, tex0
@@ -51,23 +129,19 @@
     if outer:
         angle = atan2(y1 - y0, x1 - x0) - texangle
 
-        col0l = [ (1.0,0.5,0.5), (0.5,0.5,1.0), (0.5,1.0,0.5), (1.0,0.5,0.5) ]
-        col1l = [ (.75,0.5,0.5), (0.5,0.5,.75), (0.5,.75,0.5), (.75,0.5,0.5) ]
-
         a = angle * 6 / (2 * pi)
         while a < 0: a+=3
         i = int(a) % 3
         f = a - int(a)
-        
-        col0 = js(lerp(col0l[i], col0l[i+1], f))
-        col1 = js(lerp(col1l[i], col1l[i+1], f))
 
-        src = "SRC_COLOR"
+        vecs = [ (1,0,0),  (0,0,1),  (0,1,0),  (1,0,0) ]
+        vec = lerp(vecs[i], vecs[i+1], f)
     else:
-        col0 = "1 .5 .5 1"
-        col1 = ".75 .5 .5 1"
+        vec = (1,0,0)
 
-        src = "SRC_ALPHA"
+    col0 = colmap0(vec)
+    col1 = colmap1(vec)
+    dotvec = js(vec)
 
     code = """
     PushAttrib ENABLE_BIT
@@ -75,7 +149,6 @@
     BindTexture TEXTURE_2D %(texid)s
     TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR
     TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR
-    Hint PERSPECTIVE_CORRECTION_HINT NICEST
     Enable TEXTURE_2D
     """ % locals()
     
@@ -84,18 +157,17 @@
         TexEnv TEXTURE_FILTER_CONTROL_EXT TEXTURE_LOD_BIAS_EXT %s
         """ % lodbias
 
-    code += """
-    TexEnv TEXTURE_ENV TEXTURE_ENV_MODE COMBINE_EXT
-    TexEnv TEXTURE_ENV COMBINE_RGB_EXT DOT3_RGBA_EXT
-    TexEnv TEXTURE_ENV SOURCE0_RGB_EXT TEXTURE
-    TexEnv TEXTURE_ENV OPERAND0_RGB_EXT %(src)s
-    TexEnv TEXTURE_ENV SOURCE1_RGB_EXT PREVIOUS_EXT
-    TexEnv TEXTURE_ENV OPERAND1_RGB_EXT SRC_COLOR
+    if outer:
+        code += texenv_outer % locals()
+    else:
+        code += texenv_inner % locals()
 
+    alpha = alphalevel
+    code += """
     # Create edge stencil
 
     Enable ALPHA_TEST
-    AlphaFunc LESS 0.5
+    AlphaFunc LESS %(alpha)s
     ColorMask 0 0 0 0
 
     StencilMask 255




reply via email to

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