[Top][All Lists]
[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
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/18
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/19
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/19
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/22
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/22
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/23
- [Gzz-commits] gzz/gfx/demo irregu3.py,
Janne V. Kujala <=
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/25
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/25
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/28
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/29
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/29
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/29
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/29
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/29
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/30
- [Gzz-commits] gzz/gfx/demo irregu3.py, Janne V. Kujala, 2002/10/31