[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [ff-cvs] fenfire/org/fenfire demo/detail/pagespanbgfilte...,
Tuomas J. Lukka <=