[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz Documentation/Manuscripts/Irregu/Irregular_...
From: |
Janne V. Kujala |
Subject: |
[Gzz-commits] gzz Documentation/Manuscripts/Irregu/Irregular_... |
Date: |
Sat, 02 Nov 2002 09:51:37 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Janne V. Kujala <address@hidden> 02/11/02 09:51:36
Modified files:
Documentation/Manuscripts/Irregu: Irregular_shape_profiles.html
gfx/demo : irregu3.py
gzz/gfx/gl : GL.java
Log message:
Implement constant displacement border irregu profile
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/Documentation/Manuscripts/Irregu/Irregular_shape_profiles.html.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/irregu3.py.diff?tr1=1.43&tr2=1.44&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/GL.java.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
Patches:
Index: gzz/Documentation/Manuscripts/Irregu/Irregular_shape_profiles.html
diff -u gzz/Documentation/Manuscripts/Irregu/Irregular_shape_profiles.html:1.2
gzz/Documentation/Manuscripts/Irregu/Irregular_shape_profiles.html:1.3
--- gzz/Documentation/Manuscripts/Irregu/Irregular_shape_profiles.html:1.2
Sat Nov 2 06:57:18 2002
+++ gzz/Documentation/Manuscripts/Irregu/Irregular_shape_profiles.html Sat Nov
2 09:51:36 2002
@@ -2,88 +2,58 @@
<html>
<head>
<title>Irregular shape profiles</title>
-
+
<meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1">
</head>
<body>
-
+
<table cellpadding="2" cellspacing="2" border="1" width="100%">
- <tbody>
- <tr>
- <td valign="top">Profile<br>
- </td>
- <td valign="top">Required extensions<br>
- </td>
- <td valign="top">displacement resolution (bits)<br>
- </td>
- <td valign="top">texture units<br>
- </td>
- <td valign="top">register combiners<br>
- </td>
- <td valign="top">inner edge textures<br>
- </td>
- <td valign="top">outer edge textures<br>
- </td>
- <td valign="top">texture bits<br>
- </td>
- <td valign="top">stored angles (--> works for only one ripple
+ <tbody>
+ <tr>
+ <td valign="top">Profile<br>
+ </td>
+ <td valign="top">Required extensions<br>
+ </td>
+ <td valign="top">displacement resolution (bits)<br>
+ </td>
+ <td valign="top">texture units<br>
+ </td>
+ <td valign="top">register combiners<br>
+ </td>
+ <td valign="top">inner edge textures<br>
+ </td>
+ <td valign="top">outer edge textures<br>
+ </td>
+ <td valign="top">texture bits<br>
+ </td>
+ <td valign="top">stored angles (--> works for only one ripple
amplitude/period ratio)<br>
- </td>
- <td valign="top">Draw color/texture w/o stencil<br>
- </td>
- <td valign="top">1-pass border + inside color/texture w/o stencil<br>
- </td>
- <td valign="top">Minification<br>
- </td>
- <td valign="top">Magnification<br>
- </td>
- <td valign="top">sqrt(scale)-border width option (currently only
+ </td>
+ <td valign="top">Draw color/texture w/o stencil<br>
+ </td>
+ <td valign="top">1-pass border + inside color/texture w/o stencil<br>
+ </td>
+ <td valign="top">Minification<br>
+ </td>
+ <td valign="top">Magnification<br>
+ </td>
+ <td valign="top">sqrt(scale)-border width option (currently only
implemented for mipmaps)<br>
- </td>
- </tr>
- <tr>
- <td valign="top">NV_PROG (NV30)<br>
- </td>
- <td valign="top">GL_NV_fragment_program<br>
- </td>
- <td valign="top">16 (can also use float)<br>
- </td>
- <td valign="top">1 (w/ multiple accesses)<br>
- </td>
- <td valign="top"><br>
- </td>
- <td valign="top">1xHILO<br>
- </td>
- <td valign="top">-<br>
- </td>
- <td valign="top">32<br>
- </td>
- <td valign="top"><br>
- </td>
- <td valign="top">Yes<br>
- </td>
- <td valign="top">Yes<br>
- </td>
- <td valign="top">Works the same for any scale<br>
- </td>
- <td valign="top">Works the same for any scale<br>
- </td>
- <td valign="top">Yes (but thick border may require too many
accesses)<br>
- </td>
- </tr>
- <tr>
- <td valign="top">NV_SHAD (NV20)<br>
</td>
- <td valign="top">GL_NV_texture_shader<br>
+ </tr>
+ <tr>
+ <td valign="top">NV_PROG (NV30)<br>
</td>
- <td valign="top">16<br>
+ <td valign="top">GL_NV_fragment_program<br>
</td>
- <td valign="top">3 (2 w/ NV25)<br>
+ <td valign="top">16 (can also use float)<br>
+ </td>
+ <td valign="top">1 (w/ multiple accesses)<br>
</td>
<td valign="top"><br>
</td>
- <td valign="top">1xHILO (+ 1D-ALPHA edge)<br>
+ <td valign="top">1xHILO<br>
</td>
<td valign="top">-<br>
</td>
@@ -93,139 +63,199 @@
</td>
<td valign="top">Yes<br>
</td>
- <td valign="top">Yes (w/ more combiners)<br>
- </td>
- <td valign="top">1D-texture mipmap<br>
- </td>
- <td valign="top">Up to 1D texture size<br>
- </td>
- <td valign="top">No (thick border looks bad)<br>
- </td>
- </tr>
- <tr>
- <td valign="top">NV_COMB_MULTITEX (NV20)<br>
- </td>
- <td valign="top">GL_NV_register_combiners<br>
- </td>
- <td valign="top">8<br>
- </td>
- <td valign="top">3<br>
- </td>
- <td valign="top">4<br>
- </td>
- <td valign="top">2xINTENSITY<br>
- </td>
- <td valign="top">-<br>
- </td>
- <td valign="top">16<br>
- </td>
- <td valign="top"><br>
- </td>
<td valign="top">Yes<br>
</td>
- <td valign="top">Yes (w/ more combiners)<br>
+ <td valign="top">Works the same for any scale<br>
</td>
<td valign="top">Works the same for any scale<br>
</td>
- <td valign="top">Up to displacement resolution<br>
+ <td valign="top">Yes (but thick border may require too many
accesses)<br>
</td>
- <td valign="top">Possible, but thick border may look bad with only
- 3 accesses<br>
- </td>
</tr>
<tr>
- <td valign="top">NV_COMB_DOT3 (NV10)<br>
- </td>
- <td valign="top">GL_NV_register_combiners<br>
- </td>
- <td valign="top">7-8<br>
- </td>
- <td valign="top">1<br>
- </td>
- <td valign="top">2<br>
- </td>
- <td valign="top">(alpha of outer)<br>
- </td>
- <td valign="top">2xRGBA<br>
- </td>
- <td valign="top">64<br>
- </td>
- <td valign="top">3<br>
+ <td valign="top">NV_SHAD (NV20)<br>
+ </td>
+ <td valign="top">GL_NV_texture_shader<br>
+ </td>
+ <td valign="top">16<br>
+ </td>
+ <td valign="top">3 (2 w/ NV25)<br>
+ </td>
+ <td valign="top"><br>
+ </td>
+ <td valign="top">1xHILO (+ 1D-ALPHA edge)<br>
+ </td>
+ <td valign="top">-<br>
+ </td>
+ <td valign="top">32<br>
+ </td>
+ <td valign="top"><br>
+ </td>
+ <td valign="top">Yes<br>
+ </td>
+ <td valign="top">Yes (w/ more combiners)<br>
+ </td>
+ <td valign="top">1D-texture mipmap<br>
+ </td>
+ <td valign="top">Up to 1D texture size<br>
+ </td>
+ <td valign="top">No (thick border looks bad)<br>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">NV_COMB_MULTITEX (NV20)<br>
+ </td>
+ <td valign="top">GL_NV_register_combiners<br>
+ </td>
+ <td valign="top">8<br>
+ </td>
+ <td valign="top">3<br>
+ </td>
+ <td valign="top">4<br>
+ </td>
+ <td valign="top">2xINTENSITY<br>
+ </td>
+ <td valign="top">-<br>
+ </td>
+ <td valign="top">16<br>
+ </td>
+ <td valign="top"><br>
+ </td>
+ <td valign="top">Yes<br>
+ </td>
+ <td valign="top">Yes (w/ more combiners)<br>
+ </td>
+ <td valign="top">Works the same for any scale<br>
+ </td>
+ <td valign="top">Up to displacement resolution<br>
+ </td>
+ <td valign="top">Possible, but thick border may look bad with only
+ 3 accesses<br>
</td>
+ </tr>
+ <tr>
+ <td valign="top">NV_COMB_DOT3 (NV10)<br>
+ </td>
+ <td valign="top">GL_NV_register_combiners<br>
+ </td>
+ <td valign="top">7-8<br>
+ </td>
+ <td valign="top">1<br>
+ </td>
+ <td valign="top">2<br>
+ </td>
+ <td valign="top">(alpha of outer)<br>
+ </td>
+ <td valign="top">2xRGBA<br>
+ </td>
+ <td valign="top">64<br>
+ </td>
+ <td valign="top">3<br>
+ </td>
+ <td valign="top">Yes<br>
+ </td>
+ <td valign="top">(w/ more combiners)<br>
+ </td>
+ <td valign="top">Outer texture mipmap<br>
+ </td>
+ <td valign="top">Can interpolate outer edge towards inner edge
+(up to displacement resolution)<br>
+ </td>
<td valign="top">Yes<br>
</td>
- <td valign="top">(w/ more combiners)<br>
- </td>
- <td valign="top">Outer texture mipmap<br>
- </td>
- <td valign="top">Can interpolate outer edge towards inner edge (up
- to displacement resolution)<br>
- </td>
- <td valign="top">Yes<br>
- </td>
- </tr>
- <tr>
- <td valign="top">NV_COMB_DOT4 (NV10)<br>
- </td>
- <td valign="top">GL_NV_register_combiners<br>
- </td>
- <td valign="top">7-8<br>
- </td>
- <td valign="top">1<br>
- </td>
- <td valign="top">2<br>
- </td>
- <td valign="top">2xINTENSITY<br>
- </td>
- <td valign="top">2xRGBA<br>
- </td>
- <td valign="top">80<br>
- </td>
- <td valign="top">4<br>
- </td>
+ </tr>
+ <tr>
+ <td valign="top">NV_COMB_DOT4 (NV10)<br>
+ </td>
+ <td valign="top">GL_NV_register_combiners<br>
+ </td>
+ <td valign="top">7-8<br>
+ </td>
+ <td valign="top">1<br>
+ </td>
+ <td valign="top">2<br>
+ </td>
+ <td valign="top">2xINTENSITY<br>
+ </td>
+ <td valign="top">2xRGBA<br>
+ </td>
+ <td valign="top">80<br>
+ </td>
+ <td valign="top">4<br>
+ </td>
+ <td valign="top">Yes<br>
+ </td>
+ <td valign="top">(w/ more combiners)<br>
+ </td>
+ <td valign="top">Outer texture mipmap<br>
+ </td>
+ <td valign="top">Edge width increases<br>
+ </td>
<td valign="top">Yes<br>
</td>
- <td valign="top">(w/ more combiners)<br>
- </td>
- <td valign="top">Outer texture mipmap<br>
- </td>
- <td valign="top">Edge width increases<br>
- </td>
- <td valign="top">Yes<br>
- </td>
- </tr>
- <tr>
- <td valign="top">DOT3<br>
- </td>
- <td valign="top">GL_EXT_texture_env_dot3 <br>
- </td>
- <td valign="top">5-6<br>
- </td>
- <td valign="top">1<br>
- </td>
- <td valign="top"><br>
- </td>
- <td valign="top">(alpha of outer)<br>
- </td>
- <td valign="top">2xRGBA<br>
- </td>
- <td valign="top">64<br>
- </td>
- <td valign="top">3<br>
- </td>
- <td valign="top">(black w/ blend)<br>
- </td>
- <td valign="top">No<br>
- </td>
- <td valign="top">Outer texture mipmap<br>
- </td>
- <td valign="top">Edge width increases<br>
+ </tr>
+ <tr>
+ <td valign="top">DOT3<br>
+ </td>
+ <td valign="top">GL_EXT_texture_env_dot3 <br>
+ </td>
+ <td valign="top">5-6<br>
+ </td>
+ <td valign="top">1<br>
+ </td>
+ <td valign="top"><br>
+ </td>
+ <td valign="top">(alpha of outer)<br>
+ </td>
+ <td valign="top">2xRGBA<br>
+ </td>
+ <td valign="top">64<br>
+ </td>
+ <td valign="top">3<br>
+ </td>
+ <td valign="top">(black w/ blend)<br>
+ </td>
+ <td valign="top">No<br>
+ </td>
+ <td valign="top">Outer texture mipmap<br>
+ </td>
+ <td valign="top">Edge width increases<br>
+ </td>
+ <td valign="top">Yes<br>
</td>
- <td valign="top">Yes<br>
- </td>
- </tr>
- <tr>
- <td valign="top">STD (multi pass perturbed border)<br>
+ </tr>
+ <tr>
+ <td valign="top">STD_MULTIPASS (perturbed border)<br>
+ </td>
+ <td valign="top">GL_EXT_texture_env_add<br>
+ </td>
+ <td valign="top">8 (4 with G400)<br>
+ </td>
+ <td valign="top">1<br>
+ </td>
+ <td valign="top"><br>
+ </td>
+ <td valign="top">2xINTENSITY<br>
+ </td>
+ <td valign="top">-<br>
+ </td>
+ <td valign="top">16<br>
+ </td>
+ <td valign="top"><br>
+ </td>
+ <td valign="top">(black w/ blend)<br>
+ </td>
+ <td valign="top">No<br>
+ </td>
+ <td valign="top">Works the same for any scale<br>
+ </td>
+ <td valign="top">Works the same for any scale<br>
+ </td>
+ <td valign="top">Possible, but large perturbation looks bad<br>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">STD_CONSTD (constant displacement border)<br>
</td>
<td valign="top">GL_EXT_texture_env_add<br>
</td>
@@ -249,76 +279,46 @@
</td>
<td valign="top">Works the same for any scale<br>
</td>
- <td valign="top">Works the same for any scale<br>
+ <td valign="top">Up to displacement resolution<br>
+ </td>
+ <td valign="top">Yes<br>
</td>
- <td valign="top">Possible, but large perturbation looks bad<br>
- </td>
</tr>
<tr>
- <td valign="top">STD (constant displacement border; not currently
-implemented)<br>
- </td>
- <td valign="top">GL_EXT_texture_env_add<br>
- </td>
- <td valign="top">8 (4 with G400)<br>
- </td>
- <td valign="top">1<br>
- </td>
- <td valign="top"><br>
- </td>
- <td valign="top">2xINTENSITY<br>
- </td>
- <td valign="top">-<br>
- </td>
- <td valign="top">16<br>
- </td>
- <td valign="top"><br>
- </td>
- <td valign="top">(black w/ blend)<br>
- </td>
- <td valign="top">No<br>
- </td>
- <td valign="top">Works the same for any scale<br>
- </td>
- <td valign="top">Up to displacement resolution<br>
- </td>
- <td valign="top">Yes<br>
- </td>
- </tr>
- <tr>
- <td valign="top">STD_4<br>
- </td>
- <td valign="top">GL_EXT_texture_env_add<br>
- </td>
- <td valign="top">8 (4 with G400)<br>
- </td>
- <td valign="top">1<br>
- </td>
- <td valign="top"><br>
- </td>
- <td valign="top">2xINTENSITY<br>
- </td>
- <td valign="top">2x4xRGBA<br>
- </td>
- <td valign="top">80<br>
- </td>
- <td valign="top">4<br>
- </td>
- <td valign="top">(black w/ blend)<br>
- </td>
- <td valign="top">No<br>
- </td>
- <td valign="top">Outer texture mipmap<br>
- </td>
- <td valign="top">Edge width increases<br>
+ <td valign="top">STD_4<br>
+ </td>
+ <td valign="top">GL_EXT_texture_env_add<br>
+ </td>
+ <td valign="top">8 (4 with G400)<br>
+ </td>
+ <td valign="top">1<br>
+ </td>
+ <td valign="top"><br>
+ </td>
+ <td valign="top">2xINTENSITY<br>
+ </td>
+ <td valign="top">2x4xRGBA<br>
+ </td>
+ <td valign="top">80<br>
+ </td>
+ <td valign="top">4<br>
+ </td>
+ <td valign="top">(black w/ blend)<br>
+ </td>
+ <td valign="top">No<br>
+ </td>
+ <td valign="top">Outer texture mipmap<br>
+ </td>
+ <td valign="top">Edge width increases<br>
+ </td>
+ <td valign="top">Yes<br>
</td>
- <td valign="top">Yes<br>
- </td>
- </tr>
-
- </tbody>
+ </tr>
+
+ </tbody>
</table>
- <br>
+ <br>
+ <br>
<br>
<br>
<br>
Index: gzz/gfx/demo/irregu3.py
diff -u gzz/gfx/demo/irregu3.py:1.43 gzz/gfx/demo/irregu3.py:1.44
--- gzz/gfx/demo/irregu3.py:1.43 Sat Nov 2 07:29:55 2002
+++ gzz/gfx/demo/irregu3.py Sat Nov 2 09:51:36 2002
@@ -37,7 +37,8 @@
if GL.hasExtension("GL_EXT_texture_env_dot3"):
profiles.append("DOT3")
-profiles.append("STD")
+profiles.append("STD_MULTIPASS")
+profiles.append("STD_CONSTD")
profiles.append("STD_4")
def getIrreguTex(components, iformat, format, scale = 1, bias = 0, angle = 0,
angles = 0, invert = 0):
@@ -73,12 +74,17 @@
using_secondary_color = 0
using_multitex = 0
+ print "Using profile:", profile
+
if profile == "NV_PROG":
+ print "Using 2-vector HILO displacement texture with
GL_NV_fragment_program"
using_fragprog = 1
radius = 2
dh = [ sqrt(radius**2 - d**2) for d in range(0,radius+1) ]
+ global prog_inner, prog_outer
+
prog_inner = GL.createProgram("""!!FP1.0
# f[TEX0].xyw texture coordinates
# f[TEX2].xy texture HI and LO component weights
@@ -376,7 +382,7 @@
getIrreguTex(4, "RGBA", "RGBA", scale = .25, bias = .75,
angles = 3, invert = 1),
)
- elif profile == "STD" or profile == "STD_4":
+ elif profile == "STD_MULTIPASS" or profile == "STD_CONSTD" or profile ==
"STD_4":
print "Using full displacement resolution texture with standard GL
(texture_env_add)"
texenv = """
@@ -427,7 +433,7 @@
global scaling
scaling = scalings[int(k) - 1]
init()
- elif "F1" <= k <= "F12":
+ elif "F1" <= k <= "F9":
global profile
profile = profiles[int(k[1]) - 1]
init()
@@ -505,6 +511,9 @@
Enable TEXTURE_2D
""" % locals()
+ # One-pixel difference of displacement
+ borderalpha = 1.0 / (scale * ripple_scale * texscale)
+
if using_multitex and outer:
# XXX: scaling doesn't work properly because the coordinate
# transformation is not known here
@@ -513,8 +522,8 @@
# alpha: value added to the displacement values
# blue: value added to the middle displacement (in addition to alpha)
m = 1.0 / (striplen * scale)
- alpha = 1.5 / (scale * ripple_scale * texscale)
- blue = 1.0 / (scale * ripple_scale * texscale)
+ alpha = 1.5 * borderalpha
+ blue = 1.0 * borderalpha
#print m*scale,alpha*256,blue*256
@@ -570,12 +579,11 @@
dx = cos(angle)
dy = sin(angle)
- m = 1.0 / (striplen * scale)
# Note: dx,dy below are applied after texture matrix
vec = (dx / scale,
dy / scale,
0,
- 1.0 / (scale * ripple_scale * texscale),
+ borderalpha,
)
texcoords += [ [ vec, vec, vec, vec, ],
@@ -627,11 +635,14 @@
ActiveTexture TEXTURE0
""" % edgelodbias
+
if alphalevel:
+ da = (profile == "STD_CONSTD") * outer * borderalpha * 3
+
code += """
Enable ALPHA_TEST
AlphaFunc LESS %s
- """ % alphalevel
+ """ % (alphalevel - da)
if outer:
code += texenv_outer % locals()
@@ -801,7 +812,7 @@
self.initIrregu()
if self.use_stencil:
- if texenv_inner == texenv_outer and angles == 0:
+ if profile == "STD_MULTIPASS":
vs.map.put(getDListNocoords("PushMatrix\n"
"Translate -2 0 0"))
vs.map.put(self.stencil_init)
Index: gzz/gzz/gfx/gl/GL.java
diff -u gzz/gzz/gfx/gl/GL.java:1.19 gzz/gzz/gfx/gl/GL.java:1.20
--- gzz/gzz/gfx/gl/GL.java:1.19 Tue Oct 29 14:55:36 2002
+++ gzz/gzz/gfx/gl/GL.java Sat Nov 2 09:51:36 2002
@@ -506,29 +506,29 @@
String internalFormat, int x, int y,
int w, int h, int border) ;
-//--------- VertexProgramNV
- /** A vertex program object.
- * Like Texture, id = directly VP id
+//--------- OpenGL Program
+ /** An OpenGL program object.
+ * Like Texture, id = directly the program id
*/
- static public class VertexProgramNV extends NonRenderableJavaObject {
- private VertexProgramNV(int id) { super(id); }
- protected void deleteObj() { impl_deleteVertexProgramNV(getId()); }
- public int getVPId() { return getId(); }
+ static public class Program extends NonRenderableJavaObject {
+ private Program(int id) { super(id); }
+ protected void deleteObj() { impl_deleteProgram(getId()); }
+ public int getProgId() { return getId(); }
public int load(String program) {
- return impl_VertexProgramNV_load(getId(), program);
+ return impl_Program_load(getId(), program);
}
}
- static public VertexProgramNV createVertexProgramNV() {
- return new VertexProgramNV(impl_createVertexProgramNV());
+ static public Program createProgram() {
+ return new Program(impl_createProgram());
}
- static public VertexProgramNV createVertexProgramNV(String program) {
- VertexProgramNV vp = new VertexProgramNV(impl_createVertexProgramNV());
- vp.load(program);
- return vp;
+ static public Program createProgram(String program) {
+ Program prog = new Program(impl_createProgram());
+ prog.load(program);
+ return prog;
}
- static private native int impl_createVertexProgramNV();
- static private native void impl_deleteVertexProgramNV(int id);
- static private native int impl_VertexProgramNV_load(int id, String
program);
+ static private native int impl_createProgram();
+ static private native void impl_deleteProgram(int id);
+ static private native int impl_Program_load(int id, String program);
//--------- ShaderRect
- [Gzz-commits] gzz Documentation/Manuscripts/Irregu/Irregular_...,
Janne V. Kujala <=