gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] gzz ./TODO gfx/demo/softshadow.py gzz/gfx/gl/GL...


From: Tuomas J. Lukka
Subject: [Gzz-commits] gzz ./TODO gfx/demo/softshadow.py gzz/gfx/gl/GL...
Date: Sun, 26 Jan 2003 10:07:14 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Tuomas J. Lukka <address@hidden>        03/01/26 10:06:54

Modified files:
        .              : TODO 
        gfx/demo       : softshadow.py 
        gzz/gfx/gl     : GL.java 
        test/tools     : gfx.py 

Log message:
        Make graphical tests pass on R300 by not using pbuffers.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/TODO.diff?tr1=1.534&tr2=1.535&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/softshadow.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/GL.java.diff?tr1=1.44&tr2=1.45&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/test/tools/gfx.py.diff?tr1=1.16&tr2=1.17&r1=text&r2=text

Patches:
Index: gzz/TODO
diff -u gzz/TODO:1.534 gzz/TODO:1.535
--- gzz/TODO:1.534      Sat Jan 25 09:45:13 2003
+++ gzz/TODO    Sun Jan 26 10:06:53 2003
@@ -63,13 +63,17 @@
 
 0.8alpha5: saving, loading etc. with mediaserver useful; tests
     jvk:
-       - fix libpaper on R300:
-           the problem is that GENERATE_MIPMAP_SGIS does not work.
+       - fix libpaper optimized papers on R300:
+           the problem is that GENERATE_MIPMAP_SGIS does not work
+           for copyteximage.
            See the texture dump.
            When I set max_level to 0, it started working but read the
            texture from the wrong point on screen. 
+           (that seems to be because glGet of raster position
+           is giving out garbage?? (test, report))
            Use the "workaroundStupidBuggyAtiDrivers" if for the fix,
            and send a bug report.
+       - work around xupdf compressed tex image bug on R300
     benja:
        - Papers
          - P2P article and diff thesis
Index: gzz/gfx/demo/softshadow.py
diff -u gzz/gfx/demo/softshadow.py:1.4 gzz/gfx/demo/softshadow.py:1.5
--- gzz/gfx/demo/softshadow.py:1.4      Sun Nov 24 16:12:40 2002
+++ gzz/gfx/demo/softshadow.py  Sun Jan 26 10:06:53 2003
@@ -3,14 +3,35 @@
 from gfx.libpaper.texcache import getCachedTexture
 
 noise = getCachedTexture(
-    [ 512, 512, 0, 2, "DSDT_NV", "DSDT_NV", "geometric",
+    [ 128, 128, 0, 4, "RGBA", "RGBA", "geometric",
        ["type","7","scale","2", "bias", "-1","seed","42"]],
         shade_all_levels = 1)
 
-w.setLocation(0,0,1024,1024)
+# w.setLocation(0,0,1024,1024)
 
 from java.awt import Color
 
+if globals().has_key("compfp"):
+    for f in (compfp,):
+           f.deleteObject()
+
+compfp = GL.createProgram(
+"""!!ARBfp1.0
+
+TEMP x;
+TEMP y;
+TEMP z;
+TEX x, fragment.texcoord[0], texture[0], 2D;
+TEX y, fragment.texcoord[1], texture[1], 2D;
+MUL z.xyz, x, y.wwww;
+SLT y, y.w, fragment.position.z;
+MOV z.xyz, y;
+SWZ z.w, fragment.color, y, x, y, 1;
+MOV result.color, z;
+END
+"""
+)
+
 class Rects :
     def drawScene(self, vs, seed):
        vs.map.put(background((.3, .6, .7)))
@@ -20,11 +41,11 @@
        def r(s=1):
            return s * gen.nextDouble()
 
-       vs.put(coloredQuad((.3,.7,.8), texcoord1=10), "BG", depths[3], 0, 0, 
1200, 1200)
+       vs.put(coloredQuad((.3,.7,.8), texcoord1=10), "BG", depths[3], 0, 0, 
600, 600)
        # self.draw(vs, (.3,.7,.8), depths, depths[3], 0, 0, 1200, 1200)
-       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)
+       self.draw(vs, (0,1,0.5), depths, depths[2], r(640), r(650), r(400)+100, 
r(500)+100)
+       self.draw(vs, (1,0.5,0), depths, depths[1], r(650), r(650), r(400)+100, 
r(600)+100)
+       self.draw(vs, (0.5,0,1), depths, depths[0], r(600), r(600), r(500)+100, 
r(400)+100)
     def key(self, key):
        pass
 
@@ -86,20 +107,20 @@
     def scene(self,*args):
        self.drawScene(*args)
 
-ts = 1024
+ts = 512
 
 class SBScene(Rects):
     def __init__(self):
        self.tex = GL.createTexture()
        self.dtex = GL.createTexture()
-       for l in range(0,5):
-           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")
+       for l in range(0,3):
+            self.tex.loadNull2D(l, "RGB", ts/2**l, ts/2**l, 0, "RGB", "FLOAT")
+            self.dtex.loadNull2D(l, "DEPTH_COMPONENT", ts/2**l, ts/2**l, 0, 
"DEPTH_COMPONENT", "BYTE")
        self.texoffs = GL.createTexture()
        self.drawshad = 1
        self.seed = 0
        self.usedepth = 0
-       self.shift = (-.005, .01)
+       self.shift = (-.0005, .001)
        self.vob = getDList("""
            ActiveTexture TEXTURE0
            Begin TRIANGLES
@@ -132,6 +153,8 @@
        # Shadow matrix
        fact = .5**level
        shif = self.shift[0] * fact
+       shif = 0
+       print fact, shif
        vs.map.put(getDListNocoords("""
            PushMatrix
            MultMatrix %(fact)s 0  0 0 \
@@ -143,18 +166,17 @@
        vs.map.put(getDListNocoords("""
            PopMatrix
        """))
-       print "WH: ", int(ts*fact)
+       # 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))
+       # vs.map.put(texim, vs.orthoCS(0, str(("dept_",level)), 0, 0, ts * 
fact, 1, 1))
+       vs.map.put(texim, vs.orthoCS(0, str(("dept_",level)), 0, 0, ts*fact, 1, 
1))
 
     def scene(self, vs):
-       if self.usedepth:
-           texid = self.dtex.getTexId()
-       else:
-           texid = self.tex.getTexId()
+       self.drawScene(vs, self.seed)
+       texid = self.dtex.getTexId()
        # texidoffs = self.texoffs.getTexId()
        texidoffs = noise.getTexId()
 
@@ -163,109 +185,93 @@
            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)
+       for i in range(0,3):
+           self.drawShadowLevel(vs, i)
        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_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
+           # 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
+           Disable TEXTURE_2D
+           # Disable TEXTURE_2D
 
 
            ActiveTexture TEXTURE1
+           Enable TEXTURE_2D
            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 0.5
-
-           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_MAX_LEVEL 1
+           # TexParameter TEXTURE_2D DEPTH_TEXTURE_MODE_ARB LUMINANCE
+           #
+           # TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 10 
+           # TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR 
+           TexParameter TEXTURE_2D TEXTURE_MAG_FILTER NEAREST 
            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()))
 
 
-       vs.map.put(getDListNocoords("""
-           PushMatrix
-           MultMatrix 1 0  0 0 \
-                       0 1 0 0 \
-                       %(shif)s %(shif)s 1 0 \
-                       0 0 0 1
-       """ % locals()))
-       vs.put(getDList( """
-           Enable TEXTURE_2D
-           TexGen S TEXTURE_GEN_MODE EYE_LINEAR
-           TexGen T TEXTURE_GEN_MODE EYE_LINEAR
-           TexGen R TEXTURE_GEN_MODE EYE_LINEAR
-           Enable TEXTURE_GEN_S
-           Enable TEXTURE_GEN_T
-           Enable TEXTURE_GEN_R
-
-           TexGen S EYE_PLANE 1 0 0 0.00
-           TexGen T EYE_PLANE 0 1 0 0.00
-           TexGen R EYE_PLANE 0.0 -.00 +.00005 .5
+       if 1:
+           shif = self.shift[0] 
+           shif = 0
+           vs.map.put(getDListNocoords("""
+               PushMatrix
+               MultMatrix 1 0  0 0 \
+                           0 1 0 0 \
+                           %(shif)s %(shif)s 1 0 \
+                           0 0 0 1
+           """ % locals()))
+
+           vs.put(getDList( """
+               Enable TEXTURE_2D
+               TexGen S TEXTURE_GEN_MODE EYE_LINEAR
+               TexGen T TEXTURE_GEN_MODE EYE_LINEAR
+               TexGen R TEXTURE_GEN_MODE EYE_LINEAR
+               Enable TEXTURE_GEN_S
+               Enable TEXTURE_GEN_T
+               Enable TEXTURE_GEN_R
+
+               TexGen S EYE_PLANE 1 0 0 0.00
+               TexGen T EYE_PLANE 0 1 0 0.00
+               TexGen R EYE_PLANE 0.0 -.00 +.00005 .5
+
+               TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
+               ActiveTexture TEXTURE0
+               Disable BLEND
+               Color 1 1 1 .25
+           """% locals()), "TEXGEN", 0, 0, ts, ts, -ts)
+
+           vs.map.put(getDListNocoords("""
+               PopMatrix
+           """))
+
+       prog = compfp.getProgId()
+       vs.put(getDListNocoords( """
+           BindProgramARB FRAGMENT_PROGRAM_ARB %(prog)s
+           Enable FRAGMENT_PROGRAM_ARB
+           Disable BLEND
+           """ % locals()))
 
-           TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
-           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
-       """))
-       vs.put(quad(), "FOO", 0, 0, ts, ts, -ts)
+
+       # vs.put(quad(), "FOO", 0, 0, ts, ts, -ts)
 
        if self.drawshad:
            self.drawScene(vs, self.seed)
        vs.map.put(getDListNocoords("""
+           Disable FRAGMENT_PROGRAM_ARB
            PopAttrib
-           Disable TEXTURE_SHADER_NV
            ActiveTexture TEXTURE1
            BindTexture TEXTURE_2D 0
            ActiveTexture TEXTURE2
Index: gzz/gzz/gfx/gl/GL.java
diff -u gzz/gzz/gfx/gl/GL.java:1.44 gzz/gzz/gfx/gl/GL.java:1.45
--- gzz/gzz/gfx/gl/GL.java:1.44 Sat Jan 25 08:45:03 2003
+++ gzz/gzz/gfx/gl/GL.java      Sun Jan 26 10:06:53 2003
@@ -65,6 +65,13 @@
        }
     }
 
+    /** ATI drivers for the R300 family still have some serious bugs.
+     * We have workarounds for some in place; this flag
+     * will enable them.
+     * <p>
+     * ATI: if you want to know what you're still doing
+     * wrong, just grep the source for this variable name ;)
+     */
     public static boolean workaroundStupidBuggyAtiDrivers = false;
 
     /** Init the library - to be called once during startup.
Index: gzz/test/tools/gfx.py
diff -u gzz/test/tools/gfx.py:1.16 gzz/test/tools/gfx.py:1.17
--- gzz/test/tools/gfx.py:1.16  Sun Jan 12 06:41:48 2003
+++ gzz/test/tools/gfx.py       Sun Jan 26 10:06:54 2003
@@ -15,21 +15,28 @@
 _realwin.setLocation(0, 0, 600, 600)
 
 if gzz.client.GraphicsAPI.getInstance().getTypeString() == "gl":
-    win = gzz.client.GraphicsAPI.getInstance().createStableOffscreen(500, 500)
-    from gzz.gfx.gl import GL, GLCache, GLRen
-    _buf = GL.createByteVector(500*500*3)
-    _drawbufvs = _realwin.createVobScene()
-    _drawbufvs.map.put(SolidBgVob(Color(0, 0, 0.2)))
-    _drawbufvs.map.put(GLCache.getCallList("""
-       Disable TEXTURE_2D
-       Color 1 1 1 1
-    """))
-    cs = _drawbufvs.translateCS(0, "tr", 0, 501)
-    _drawbufvs.map.put(
-       GLRen.createDrawPixels(
-           500, 500,
-           "RGB", "UNSIGNED_BYTE", _buf),
-           cs)
+    from gzz.gfx.gl import GL
+    if GL.workaroundStupidBuggyAtiDrivers:
+       # Sorry, ATI doesn't let us use pbuffers on R300 except in FireGL.
+       # Because of that, don't put another window in front when using
+       # this.
+       win = _realwin
+    else:
+       win = gzz.client.GraphicsAPI.getInstance().createStableOffscreen(500, 
500)
+       from gzz.gfx.gl import GL, GLCache, GLRen
+       _buf = GL.createByteVector(500*500*3)
+       _drawbufvs = _realwin.createVobScene()
+       _drawbufvs.map.put(SolidBgVob(Color(0, 0, 0.2)))
+       _drawbufvs.map.put(GLCache.getCallList("""
+           Disable TEXTURE_2D
+           Color 1 1 1 1
+       """))
+       cs = _drawbufvs.translateCS(0, "tr", 0, 501)
+       _drawbufvs.map.put(
+           GLRen.createDrawPixels(
+               500, 500,
+               "RGB", "UNSIGNED_BYTE", _buf),
+               cs)
 else:
     win = _realwin
 




reply via email to

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