gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] fenfire/org/fenfire/spanimages/gl papermakers.py


From: Tuomas J. Lukka
Subject: [Gzz-commits] fenfire/org/fenfire/spanimages/gl papermakers.py
Date: Thu, 26 Jun 2003 04:53:55 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Tuomas J. Lukka <address@hidden>        03/06/26 04:53:55

Modified files:
        org/fenfire/spanimages/gl: papermakers.py 

Log message:
        Halo works

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/spanimages/gl/papermakers.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/spanimages/gl/papermakers.py
diff -u fenfire/org/fenfire/spanimages/gl/papermakers.py:1.3 
fenfire/org/fenfire/spanimages/gl/papermakers.py:1.4
--- fenfire/org/fenfire/spanimages/gl/papermakers.py:1.3        Wed Jun 25 
06:35:37 2003
+++ fenfire/org/fenfire/spanimages/gl/papermakers.py    Thu Jun 26 04:53:54 2003
@@ -2,25 +2,25 @@
 
 # PaperMaker implementations
 
+from __future__ import nested_scopes;
+
 from org.nongnu.libvob.gl import GL, PaperMill
 from vob.putil.nvcode import parseCombiner
 
 from org.fenfire.spanimages.gl import PlainPaperMaker
 
 anisofilter = """
-   TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_NEAREST
+   TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR
    TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR
-   TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 10
+#   TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 10
 """
 
 def white(w = None, paperMill = None, filter = anisofilter):
     return PlainPaperMaker(1, """
-       PushAttrib TEXTURE_BIT
        TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
        Enable TEXTURE_2D
        Disable BLEND
     """ + filter, """
-       PopAttrib
     """, None)
 
 def fancyBlend(w, paperMill = None, filter = anisofilter):
@@ -39,6 +39,60 @@
            ActiveTexture TEXTURE0
        """ % filter, "", None, paperMill, w)
 
+class HaloPaperMaker_2tex(PlainPaperMaker):
+    def __init__(self, paperMill, w):
+       PlainPaperMaker.__init__(self, 1, 
+            parseCombiner("""
+               ActiveTexture TEXTURE0
+               Enable TEXTURE_2D
+               %(filter)s
+               Disable BLEND
+               ActiveTexture TEXTURE1
+               Enable TEXTURE_2D
+               %(filter)s
+               TexEnv TEXTURE_FILTER_CONTROL TEXTURE_LOD_BIAS 3
+               ActiveTexture TEXTURE0
+
+               Enable REGISTER_COMBINERS_NV
+               CONST0 = 0 0 0 .5
+               CONST1 = 0 0 0 .15
+
+               # Get luminance multiplied by 12 * CONST1.a
+               SPARE0 = ((1-TEX1) . (CONST1.a))*4
+
+               # Multiply by another 3
+               SPARE0 = (SPARE0 . (1))*1
+
+               # Limit maximum effect
+               EF = SPARE0 * CONST0.a
+
+               # Blend the halo over the texture
+               color = EF * (1) + (1 - EF) * TEX0
+               alpha = 1
+           """ % { "filter" : anisofilter }),
+           """
+           """,
+           None, paperMill, w)
+    def makePaper(self, img, texgen):
+       p = PlainPaperMaker.makePaper(self, img, texgen)
+       #print p.getPass(0).getSetupcode()
+       p.setNPasses(2)
+       pas = p.getPass(1)
+       pas.setNTexGens(1)
+       pas.putNormalTexGen(0, texgen)
+       pas.setSetupcode("""
+           ActiveTexture TEXTURE0
+           Enable TEXTURE_2D
+           Enable BLEND
+           BlendFunc ZERO SRC_COLOR
+           BindTexture TEXTURE_2D %s
+           TexEnv TEXTURE_ENV TEXTURE_ENV_MODE REPLACE
+       """ % img.loader.getTexture().getTexId())
+       pas.setTeardowncode("""
+       """)
+       return p
+
+
 def fancyHalo(w, paperMill = None):
     if not GL.hasExtension("GL_NV_register_combiners"):
        print "fancy Halo for text not possible without 
GL_NV_register_combiners"
@@ -46,37 +100,7 @@
        return fancyBlend(w, paperMill)
     if paperMill == None:
        paperMill = PaperMill.getInstance()
-    return PlainPaperMaker(1, 
-        parseCombiner("""
-           PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
-           ActiveTexture TEXTURE0
-           Enable TEXTURE_2D
-           Disable BLEND
-           ActiveTexture TEXTURE1
-           TexEnv TEXTURE_FILTER_CONTROL TEXTURE_LOD_BIAS 3
-           ActiveTexture TEXTURE0
-
-           Enable REGISTER_COMBINERS_NV
-           CONST0 = 0 0 0 .5
-           CONST1 = 0 0 0 .15
-
-           # Get luminance multiplied by 12 * CONST1.a
-           SPARE0 = ((1-TEX1) . (CONST1.a))*4
-
-           # Multiply by another 3
-           SPARE0 = (SPARE0 . (1))*1
-
-           # Limit maximum effect
-           EF = SPARE0 * CONST0.a
-
-           # Blend the halo over the texture
-           color = EF * (1) + (1 - EF) * TEX0
-           alpha = 1
-       """),
-       """
-           PopAttrib
-       """,
-       None, paperMill, w)
+    return HaloPaperMaker_2tex(paperMill, w)
 
 blurProgram = None
 
@@ -115,19 +139,18 @@
     if not blurProgram:
        print "Fancy blurring is not possible without GL_ARB_fragment_program."
        print "Punting to Fancy halo"
+       return fancyHalo(w, paperMill)
 
     if paperMill == None:
        paperMill = PaperMill.getInstance()
 
     return PlainPaperMaker(1, """
-        PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
         BindProgram FRAGMENT_PROGRAM_ARB %s
         Enable FRAGMENT_PROGRAM_ARB
         Disable REGISTER_COMBINERS_NV
         Disable BLEND
     """ % blurProgram.getProgId(),
     """
-       PopAttrib
     """, [blurProgram], paperMill, w)
 
 




reply via email to

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