fenfire-commits
[Top][All Lists]
Advanced

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

[ff-cvs] fenfire/org/fenfire demo/detail/pagespanbgfilte...


From: Tuomas J. Lukka
Subject: [ff-cvs] fenfire/org/fenfire demo/detail/pagespanbgfilte...
Date: Sun, 14 Sep 2003 12:17:23 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Tuomas J. Lukka <address@hidden>        03/09/14 12:17:23

Modified files:
        org/fenfire/demo/detail: pagespanbgfilter.py 
        org/fenfire/spanimages/gl: papermakers.py 

Log message:
        Arch sync

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/detail/pagespanbgfilter.py.diff?tr1=1.10&tr2=1.11&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/spanimages/gl/papermakers.py.diff?tr1=1.13&tr2=1.14&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/demo/detail/pagespanbgfilter.py
diff -u fenfire/org/fenfire/demo/detail/pagespanbgfilter.py:1.10 
fenfire/org/fenfire/demo/detail/pagespanbgfilter.py:1.11
--- fenfire/org/fenfire/demo/detail/pagespanbgfilter.py:1.10    Mon Jul 14 
10:22:09 2003
+++ fenfire/org/fenfire/demo/detail/pagespanbgfilter.py Sun Sep 14 12:17:22 2003
@@ -32,7 +32,7 @@
 
 from vob.putil.demokeys import *
 
-from org.fenfire.spanimages.gl import papermakers
+from org.fenfire.spanimages.gl.papermakers import allPaperMakers
 
 pool = org.nongnu.storm.impl.TransientPool(java.util.HashSet())
 myalph = alph.impl.StormAlph(pool)
@@ -47,12 +47,8 @@
 class Scene:
     def __init__(self):
        self.w = w = vob.putil.demowindow.w
-       self.types = [
-           papermakers.white,
-           papermakers.fancyBlend,
-           papermakers.fancyHalo,
-           papermakers.fancyBlur,
-       ]
+       # self.types = [ (entry[0](), entry[1]) for entry in allPaperMakers ]
+       self.types = allPaperMakers 
        self.scrolls = sc
 
        self.scrollimager = ff.spanimages.gl.PageScrollBlockImager()
@@ -66,17 +62,21 @@
            SlideLin("y", 0, 50, "y coord", "Down", "Up"),
            SlideLin("offset", 0, 1, "seed offset", "S", "s"),
            SlideLog("scale", 1, "scale", "-", "+"),
+           Action("Time rendering", 't', self.timeRendering)
        )
+    def timeRendering(self, *args):
+       print "TIME: ", self.w.timeRender(self.vs, 1, 20)
+       
     def scene(self, vs):
 
        print "TEST:"
 
        vs.map.put(vob.vobs.SolidBackdropVob(java.awt.Color.yellow))
 
-       self.spanImageFactory.paperMaker = self.types[self.type](
-           self.w, paperOffset = self.offset)
+       self.spanImageFactory.paperMaker = self.types[self.type][0](
+           paperOffset = self.offset)
+       print self.types[self.type][1]
 
-       scaled = vs.orthoCS(0, "X", 0, self.x, self.y, self.scale, self.scale)
 
        layout = ff.view.PageSpanLayout(
                self.scrolls[self.scroll].getCurrent().subSpan(0,2),
@@ -84,4 +84,11 @@
                )
        #layout.useBg = 0
 
-       layout.place(vs, scaled)
+       nIter = 10
+       for i in range(0, nIter):
+           scaled = vs.orthoCS(0, ("X",i), -i, self.x , self.y , self.scale, 
self.scale)
+           layout.place(vs, scaled)
+
+       self.vs = vs
+
+
Index: fenfire/org/fenfire/spanimages/gl/papermakers.py
diff -u fenfire/org/fenfire/spanimages/gl/papermakers.py:1.13 
fenfire/org/fenfire/spanimages/gl/papermakers.py:1.14
--- fenfire/org/fenfire/spanimages/gl/papermakers.py:1.13       Tue Aug 26 
03:37:50 2003
+++ fenfire/org/fenfire/spanimages/gl/papermakers.py    Sun Sep 14 12:17:23 2003
@@ -72,6 +72,83 @@
 whitePaperMakers.append( (white, "White background") )
 
 # The programs here are best-first
+# The following program gives a 30% improvement 
+# to rendering speeds on a GF FX 5600
+# by using a biased texture unit instead of
+# calculating the bias explicitly in the program.
+
+# Replacing some of the MULH:s with MULX makes
+# it faster but it stops working - the results are
+# not accurate enough.
+# On the 5900, 5700 this should be a lot faster...
+# It's sad that we can't take advantage of the fixed-point
+# units at all except at the very end.
+
+nvBlurProgram = None
+if GL.hasExtension("GL_NV_fragment_program"):
+    nvBlurProgram = GL.createProgram("""!!FP1.0
+       # Get the blurred value of the text texture
+       # Texture unit 2 is blurred
+       TEX H2, f[TEX1], TEX2, 2D;
+
+       # Map blurred 'text' texture intensity to background blur
+       # as follows:
+       #   1 -> no bias
+       #   0 -> large bias
+       DP4H H2, {-10,-10,-10,31}, H2;
+
+       # The derivatives of the paper texture
+       DDXH H0, f[TEX0];
+       DDYH H1, f[TEX0];
+
+       # Scale with the DP
+       MULH H0, H2, H0;
+       MULH H1, H2, H1;
+
+       # Get the blurred value of the background texture
+       TXD H0, f[TEX0], H0, H1, TEX0, 2D;
+
+       # Get the sharp value of the text texture
+       TEX H1, f[TEX1], TEX1, 2D;
+
+       # Compute the final color
+
+       MULX o[COLR], H0, H1;
+       END
+    """)
+
+def nvFancyBlur(paperMill = None, paperOffset = 0):
+    paperMill = getPaperMill(paperMill, paperOffset)
+    if not nvBlurProgram:
+       print "Nvidia-optimized Fancy blurring is not possible without 
GL_NV_fragment_program."
+       print "Punting to ARB Fancy blur"
+       return fancyBlur(paperMill)
+
+    if paperMill == None:
+       paperMill = PaperMill.getInstance()
+
+    return PlainPaperMaker(2, """
+        BindProgram FRAGMENT_PROGRAM_NV %s
+       ActiveTexture TEXTURE2
+       TexEnv TEXTURE_FILTER_CONTROL TEXTURE_LOD_BIAS 3.8
+       ActiveTexture TEXTURE0
+        Enable FRAGMENT_PROGRAM_NV
+        Disable REGISTER_COMBINERS_NV
+        Disable BLEND
+    """ % nvBlurProgram.getProgId(),
+    """
+       ActiveTexture TEXTURE2
+       TexEnv TEXTURE_FILTER_CONTROL TEXTURE_LOD_BIAS 0
+       ActiveTexture TEXTURE0
+    """, [nvBlurProgram], paperMill)
+
+if nvBlurProgram:
+    b = nvFancyBlur
+else:
+    b = None
+
+fancyPaperMakers.append( (b, "(NVIDIA-optimized) Blurring background under 
text") )
+
 
 blurProgram = None
 
@@ -96,7 +173,7 @@
     # as follows:
     #   1 -> no bias
     #   0 -> large bias
-    DP4 coord0.w, {-6,-6,-6,18}, tex1b;
+    DP4 coord0.w, {-7,-7,-7,21}, tex1b;
 
     # Filter background texture with the proper LOD bias
     TEMP tex0;
@@ -225,4 +302,5 @@
 fancyPaperMakers.append( (fancyBlend, "No enhancement, Just rendering text on 
top of Bg (Not recommended)") )
 
 
+allPaperMakers = whitePaperMakers + fancyPaperMakers
 




reply via email to

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