diff options
author | Ben Skeggs <skeggsb@gmail.com> | 2008-02-29 13:24:31 +1100 |
---|---|---|
committer | Ben Skeggs <skeggsb@gmail.com> | 2008-02-29 13:24:31 +1100 |
commit | 8c77e6f674206ef34ab15026b08e495209dcd4ea (patch) | |
tree | 7d21d99eee6970b340bc7a3afedeadfc99dd5745 /progs | |
parent | 68ef52886263690632552ae187a4673945c2ab74 (diff) | |
parent | ebe3b34ad225e320a09bb4069ce4d24808386327 (diff) |
Merge branch 'upstream-gallium-0.1' into nouveau-gallium-0.1
Diffstat (limited to 'progs')
-rw-r--r-- | progs/demos/geartrain.dat | 238 | ||||
-rw-r--r-- | progs/ggi/sphere.asc | 264 | ||||
-rw-r--r-- | progs/ggi/torus.asc | 528 | ||||
-rw-r--r-- | progs/tests/Makefile | 1 | ||||
-rw-r--r-- | progs/tests/calibrate_rast.c | 395 |
5 files changed, 911 insertions, 515 deletions
diff --git a/progs/demos/geartrain.dat b/progs/demos/geartrain.dat index 374de48bd5..09fe4c64c2 100644 --- a/progs/demos/geartrain.dat +++ b/progs/demos/geartrain.dat @@ -1,119 +1,119 @@ -BACKGROUND = 0.000 0.500 0.700
-
-ANAME = AXLE1
-ARADIUS = 1.000
-AAXIS = 2
-APOSITION = -7.000 0.000 0.000
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 6.000
-AMOTORED = 1
-AANGULARVELOCITY = 90.000
-ADIRECTION = 1
-
-ANAME = AXLE2
-ARADIUS = 1.000
-AAXIS = 2
-APOSITION = -3.000 0.000 0.000
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 12.000
-AMOTORED = 0
-
-ANAME = AXLE3
-ARADIUS = 1.000
-AAXIS = 2
-APOSITION = 1.000 0.000 0.000
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 6.000
-AMOTORED = 0
-
-ANAME = AXLE4
-ARADIUS = 1.000
-AAXIS = 2
-APOSITION = 8.000 0.000 0.000
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 18.000
-AMOTORED = 0
-
-ANAME = AXLE5
-ARADIUS = 1.000
-AAXIS = 1
-APOSITION = 8.000 -8.200 -7.400
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 12.000
-AMOTORED = 0
-
-GNAME = GEAR1
-GTYPE = NORMAL
-GRADIUS = 2.200
-GWIDTH = 3.000
-GTEETH = 40
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE1
-GPOSITION = 0.000
-
-GNAME = GEAR2
-GTYPE = NORMAL
-GRADIUS = 2.200
-GWIDTH = 3.000
-GTEETH = 30
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE2
-GPOSITION = 0.000
-
-GNAME = GEAR3
-GTYPE = NORMAL
-GRADIUS = 2.200
-GWIDTH = 3.000
-GTEETH = 20
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE3
-GPOSITION = 0.000
-
-GNAME = GEAR4
-GTYPE = NORMAL
-GRADIUS = 1.700
-GWIDTH = 1.000
-GTEETH = 20
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE2
-GPOSITION = 5.000
-
-GNAME = GEAR5
-GTYPE = NORMAL
-GRADIUS = 3.000
-GWIDTH = 1.000
-GTEETH = 20
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE4
-GPOSITION = 5.000
-
-GNAME = GEAR6
-GTYPE = BEVEL
-GFACE = 0
-GRADIUS = 4.000
-GWIDTH = 1.000
-GTEETH = 20
-GTOOTHDEPTH = 1.700
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE4
-GPOSITION = -4.000
-
-GNAME = GEAR7
-GTYPE = BEVEL
-GFACE = 0
-GRADIUS = 4.000
-GWIDTH = 1.000
-GTEETH = 20
-GTOOTHDEPTH = 1.700
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE5
-GPOSITION = 5.000
-
-BELTNAME = BELT1
-GEAR1NAME = GEAR5
-GEAR2NAME = GEAR4
+BACKGROUND = 0.000 0.500 0.700 + +ANAME = AXLE1 +ARADIUS = 1.000 +AAXIS = 2 +APOSITION = -7.000 0.000 0.000 +ACOLOR = 0.800 0.500 0.200 +ALENGTH = 6.000 +AMOTORED = 1 +AANGULARVELOCITY = 90.000 +ADIRECTION = 1 + +ANAME = AXLE2 +ARADIUS = 1.000 +AAXIS = 2 +APOSITION = -3.000 0.000 0.000 +ACOLOR = 0.800 0.500 0.200 +ALENGTH = 12.000 +AMOTORED = 0 + +ANAME = AXLE3 +ARADIUS = 1.000 +AAXIS = 2 +APOSITION = 1.000 0.000 0.000 +ACOLOR = 0.800 0.500 0.200 +ALENGTH = 6.000 +AMOTORED = 0 + +ANAME = AXLE4 +ARADIUS = 1.000 +AAXIS = 2 +APOSITION = 8.000 0.000 0.000 +ACOLOR = 0.800 0.500 0.200 +ALENGTH = 18.000 +AMOTORED = 0 + +ANAME = AXLE5 +ARADIUS = 1.000 +AAXIS = 1 +APOSITION = 8.000 -8.200 -7.400 +ACOLOR = 0.800 0.500 0.200 +ALENGTH = 12.000 +AMOTORED = 0 + +GNAME = GEAR1 +GTYPE = NORMAL +GRADIUS = 2.200 +GWIDTH = 3.000 +GTEETH = 40 +GTOOTHDEPTH = 0.500 +GCOLOR = 0.500 0.500 0.500 +GAXLE = AXLE1 +GPOSITION = 0.000 + +GNAME = GEAR2 +GTYPE = NORMAL +GRADIUS = 2.200 +GWIDTH = 3.000 +GTEETH = 30 +GTOOTHDEPTH = 0.500 +GCOLOR = 0.500 0.500 0.500 +GAXLE = AXLE2 +GPOSITION = 0.000 + +GNAME = GEAR3 +GTYPE = NORMAL +GRADIUS = 2.200 +GWIDTH = 3.000 +GTEETH = 20 +GTOOTHDEPTH = 0.500 +GCOLOR = 0.500 0.500 0.500 +GAXLE = AXLE3 +GPOSITION = 0.000 + +GNAME = GEAR4 +GTYPE = NORMAL +GRADIUS = 1.700 +GWIDTH = 1.000 +GTEETH = 20 +GTOOTHDEPTH = 0.500 +GCOLOR = 0.500 0.500 0.500 +GAXLE = AXLE2 +GPOSITION = 5.000 + +GNAME = GEAR5 +GTYPE = NORMAL +GRADIUS = 3.000 +GWIDTH = 1.000 +GTEETH = 20 +GTOOTHDEPTH = 0.500 +GCOLOR = 0.500 0.500 0.500 +GAXLE = AXLE4 +GPOSITION = 5.000 + +GNAME = GEAR6 +GTYPE = BEVEL +GFACE = 0 +GRADIUS = 4.000 +GWIDTH = 1.000 +GTEETH = 20 +GTOOTHDEPTH = 1.700 +GCOLOR = 0.500 0.500 0.500 +GAXLE = AXLE4 +GPOSITION = -4.000 + +GNAME = GEAR7 +GTYPE = BEVEL +GFACE = 0 +GRADIUS = 4.000 +GWIDTH = 1.000 +GTEETH = 20 +GTOOTHDEPTH = 1.700 +GCOLOR = 0.500 0.500 0.500 +GAXLE = AXLE5 +GPOSITION = 5.000 + +BELTNAME = BELT1 +GEAR1NAME = GEAR5 +GEAR2NAME = GEAR4 diff --git a/progs/ggi/sphere.asc b/progs/ggi/sphere.asc index 1424a740d7..cf7cebf224 100644 --- a/progs/ggi/sphere.asc +++ b/progs/ggi/sphere.asc @@ -1,132 +1,132 @@ -Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216
-
-Named object: "Object01"
-Tri-mesh, Vertices: 20 Faces: 36
-Vertex list:
-Vertex 0: X: -210 Y: -432.781738 Z: 180.000031
-Vertex 1: X: -610.810303 Y: 144.260559 Z: 103.580154
-Vertex 2: X: 56.586655 Y: 144.260544 Z: -128.902023
-Vertex 3: X: -75.776352 Y: 144.260605 Z: 565.321838
-Vertex 4: X: -462.815979 Y: -347.937683 Z: 131.797302
-Vertex 5: X: -616.506042 Y: -126.67173 Z: 102.494209
-Vertex 6: X: -41.847229 Y: -347.937683 Z: -14.843644
-Vertex 7: X: 60.375015 Y: -126.671753 Z: -133.291641
-Vertex 8: X: -125.336807 Y: -347.937653 Z: 423.046448
-Vertex 9: X: -73.868958 Y: -126.671692 Z: 570.797424
-Vertex 10: X: -448.353271 Y: 237.304672 Z: -92.34951
-Vertex 11: X: -192.440964 Y: 237.304672 Z: -181.494431
-Vertex 12: X: 145.038193 Y: 237.304672 Z: 109.754745
-Vertex 13: X: 94.283768 Y: 237.304688 Z: 375.953766
-Vertex 14: X: -326.684937 Y: 237.304733 Z: 522.594727
-Vertex 15: X: -531.842834 Y: 237.304718 Z: 345.540588
-Vertex 16: X: -331.419525 Y: -225.964966 Z: -168.564438
-Vertex 17: X: 152.575485 Y: -225.964935 Z: 249.129868
-Vertex 18: X: -451.155914 Y: -225.964905 Z: 459.434662
-Vertex 19: X: -298.413483 Y: 423.31897 Z: 163.142761
-Face list:
-Face 0: A:0 B:4 C:6 AB:1 BC:1 CA:1
-Face 1: A:4 B:5 C:16 AB:1 BC:1 CA:1
-Face 2: A:4 B:16 C:6 AB:1 BC:1 CA:1
-Face 3: A:6 B:16 C:7 AB:1 BC:1 CA:1
-Face 4: A:5 B:1 C:10 AB:1 BC:1 CA:1
-Face 5: A:5 B:10 C:16 AB:1 BC:1 CA:1
-Face 6: A:16 B:10 C:11 AB:1 BC:1 CA:1
-Face 7: A:16 B:11 C:7 AB:1 BC:1 CA:1
-Face 8: A:7 B:11 C:2 AB:1 BC:1 CA:1
-Face 9: A:0 B:6 C:8 AB:1 BC:1 CA:1
-Face 10: A:6 B:7 C:17 AB:1 BC:1 CA:1
-Face 11: A:6 B:17 C:8 AB:1 BC:1 CA:1
-Face 12: A:8 B:17 C:9 AB:1 BC:1 CA:1
-Face 13: A:7 B:2 C:12 AB:1 BC:1 CA:1
-Face 14: A:7 B:12 C:17 AB:1 BC:1 CA:1
-Face 15: A:17 B:12 C:13 AB:1 BC:1 CA:1
-Face 16: A:17 B:13 C:9 AB:1 BC:1 CA:1
-Face 17: A:9 B:13 C:3 AB:1 BC:1 CA:1
-Face 18: A:0 B:8 C:4 AB:1 BC:1 CA:1
-Face 19: A:8 B:9 C:18 AB:1 BC:1 CA:1
-Face 20: A:8 B:18 C:4 AB:1 BC:1 CA:1
-Face 21: A:4 B:18 C:5 AB:1 BC:1 CA:1
-Face 22: A:9 B:3 C:14 AB:1 BC:1 CA:1
-Face 23: A:9 B:14 C:18 AB:1 BC:1 CA:1
-Face 24: A:18 B:14 C:15 AB:1 BC:1 CA:1
-Face 25: A:18 B:15 C:5 AB:1 BC:1 CA:1
-Face 26: A:5 B:15 C:1 AB:1 BC:1 CA:1
-Face 27: A:1 B:15 C:10 AB:1 BC:1 CA:1
-Face 28: A:15 B:14 C:19 AB:1 BC:1 CA:1
-Face 29: A:15 B:19 C:10 AB:1 BC:1 CA:1
-Face 30: A:10 B:19 C:11 AB:1 BC:1 CA:1
-Face 31: A:14 B:3 C:13 AB:1 BC:1 CA:1
-Face 32: A:14 B:13 C:19 AB:1 BC:1 CA:1
-Face 33: A:19 B:13 C:12 AB:1 BC:1 CA:1
-Face 34: A:19 B:12 C:11 AB:1 BC:1 CA:1
-
- Page 1
-
-
-
-Face 35: A:11 B:12 C:2 AB:1 BC:1 CA:1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 2
-
-
-
+Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216 + +Named object: "Object01" +Tri-mesh, Vertices: 20 Faces: 36 +Vertex list: +Vertex 0: X: -210 Y: -432.781738 Z: 180.000031 +Vertex 1: X: -610.810303 Y: 144.260559 Z: 103.580154 +Vertex 2: X: 56.586655 Y: 144.260544 Z: -128.902023 +Vertex 3: X: -75.776352 Y: 144.260605 Z: 565.321838 +Vertex 4: X: -462.815979 Y: -347.937683 Z: 131.797302 +Vertex 5: X: -616.506042 Y: -126.67173 Z: 102.494209 +Vertex 6: X: -41.847229 Y: -347.937683 Z: -14.843644 +Vertex 7: X: 60.375015 Y: -126.671753 Z: -133.291641 +Vertex 8: X: -125.336807 Y: -347.937653 Z: 423.046448 +Vertex 9: X: -73.868958 Y: -126.671692 Z: 570.797424 +Vertex 10: X: -448.353271 Y: 237.304672 Z: -92.34951 +Vertex 11: X: -192.440964 Y: 237.304672 Z: -181.494431 +Vertex 12: X: 145.038193 Y: 237.304672 Z: 109.754745 +Vertex 13: X: 94.283768 Y: 237.304688 Z: 375.953766 +Vertex 14: X: -326.684937 Y: 237.304733 Z: 522.594727 +Vertex 15: X: -531.842834 Y: 237.304718 Z: 345.540588 +Vertex 16: X: -331.419525 Y: -225.964966 Z: -168.564438 +Vertex 17: X: 152.575485 Y: -225.964935 Z: 249.129868 +Vertex 18: X: -451.155914 Y: -225.964905 Z: 459.434662 +Vertex 19: X: -298.413483 Y: 423.31897 Z: 163.142761 +Face list: +Face 0: A:0 B:4 C:6 AB:1 BC:1 CA:1 +Face 1: A:4 B:5 C:16 AB:1 BC:1 CA:1 +Face 2: A:4 B:16 C:6 AB:1 BC:1 CA:1 +Face 3: A:6 B:16 C:7 AB:1 BC:1 CA:1 +Face 4: A:5 B:1 C:10 AB:1 BC:1 CA:1 +Face 5: A:5 B:10 C:16 AB:1 BC:1 CA:1 +Face 6: A:16 B:10 C:11 AB:1 BC:1 CA:1 +Face 7: A:16 B:11 C:7 AB:1 BC:1 CA:1 +Face 8: A:7 B:11 C:2 AB:1 BC:1 CA:1 +Face 9: A:0 B:6 C:8 AB:1 BC:1 CA:1 +Face 10: A:6 B:7 C:17 AB:1 BC:1 CA:1 +Face 11: A:6 B:17 C:8 AB:1 BC:1 CA:1 +Face 12: A:8 B:17 C:9 AB:1 BC:1 CA:1 +Face 13: A:7 B:2 C:12 AB:1 BC:1 CA:1 +Face 14: A:7 B:12 C:17 AB:1 BC:1 CA:1 +Face 15: A:17 B:12 C:13 AB:1 BC:1 CA:1 +Face 16: A:17 B:13 C:9 AB:1 BC:1 CA:1 +Face 17: A:9 B:13 C:3 AB:1 BC:1 CA:1 +Face 18: A:0 B:8 C:4 AB:1 BC:1 CA:1 +Face 19: A:8 B:9 C:18 AB:1 BC:1 CA:1 +Face 20: A:8 B:18 C:4 AB:1 BC:1 CA:1 +Face 21: A:4 B:18 C:5 AB:1 BC:1 CA:1 +Face 22: A:9 B:3 C:14 AB:1 BC:1 CA:1 +Face 23: A:9 B:14 C:18 AB:1 BC:1 CA:1 +Face 24: A:18 B:14 C:15 AB:1 BC:1 CA:1 +Face 25: A:18 B:15 C:5 AB:1 BC:1 CA:1 +Face 26: A:5 B:15 C:1 AB:1 BC:1 CA:1 +Face 27: A:1 B:15 C:10 AB:1 BC:1 CA:1 +Face 28: A:15 B:14 C:19 AB:1 BC:1 CA:1 +Face 29: A:15 B:19 C:10 AB:1 BC:1 CA:1 +Face 30: A:10 B:19 C:11 AB:1 BC:1 CA:1 +Face 31: A:14 B:3 C:13 AB:1 BC:1 CA:1 +Face 32: A:14 B:13 C:19 AB:1 BC:1 CA:1 +Face 33: A:19 B:13 C:12 AB:1 BC:1 CA:1 +Face 34: A:19 B:12 C:11 AB:1 BC:1 CA:1 + + Page 1 + + + +Face 35: A:11 B:12 C:2 AB:1 BC:1 CA:1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page 2 + + + diff --git a/progs/ggi/torus.asc b/progs/ggi/torus.asc index 6bd41f4033..605a62baa4 100644 --- a/progs/ggi/torus.asc +++ b/progs/ggi/torus.asc @@ -1,264 +1,264 @@ -Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216
-
-Named object: "Object01"
-Tri-mesh, Vertices: 40 Faces: 80
-Vertex list:
-Vertex 0: X: -50.170624 Y: -0.000026 Z: -240.147842
-Vertex 1: X: -80.584503 Y: -63.958851 Z: -205.014572
-Vertex 2: X: -129.795166 Y: -39.528744 Z: -148.16774
-Vertex 3: X: -129.795166 Y: 39.528721 Z: -148.16774
-Vertex 4: X: -80.584503 Y: 63.958797 Z: -205.014572
-Vertex 5: X: 85.963654 Y: -0.000002 Z: 31.490465
-Vertex 6: X: 39.614838 Y: -63.958828 Z: 34.827602
-Vertex 7: X: -35.37915 Y: -39.528728 Z: 40.227196
-Vertex 8: X: -35.37912 Y: 39.528736 Z: 40.227188
-Vertex 9: X: 39.614838 Y: 63.95882 Z: 34.827595
-Vertex 10: X: -9.852051 Y: 0.000023 Z: 319.829254
-Vertex 11: X: -44.985352 Y: -63.958805 Z: 289.415405
-Vertex 12: X: -101.832199 Y: -39.528709 Z: 240.204758
-Vertex 13: X: -101.832184 Y: 39.528755 Z: 240.204773
-Vertex 14: X: -44.985352 Y: 63.958843 Z: 289.415405
-Vertex 15: X: -281.490326 Y: 0.000035 Z: 455.963654
-Vertex 16: X: -284.827484 Y: -63.958794 Z: 409.614868
-Vertex 17: X: -290.227112 Y: -39.528702 Z: 334.62085
-Vertex 18: X: -290.227112 Y: 39.528763 Z: 334.62088
-Vertex 19: X: -284.827484 Y: 63.958855 Z: 409.614838
-Vertex 20: X: -569.829163 Y: 0.000026 Z: 360.14798
-Vertex 21: X: -539.415344 Y: -63.958801 Z: 325.014709
-Vertex 22: X: -490.204712 Y: -39.528709 Z: 268.167847
-Vertex 23: X: -490.204712 Y: 39.528755 Z: 268.167847
-Vertex 24: X: -539.415344 Y: 63.958847 Z: 325.014679
-Vertex 25: X: -705.963684 Y: 0.000002 Z: 88.509598
-Vertex 26: X: -659.614807 Y: -63.958824 Z: 85.172462
-Vertex 27: X: -584.62085 Y: -39.528725 Z: 79.77285
-Vertex 28: X: -584.62085 Y: 39.52874 Z: 79.77285
-Vertex 29: X: -659.614868 Y: 63.958824 Z: 85.172447
-Vertex 30: X: -610.147827 Y: -0.000023 Z: -199.829361
-Vertex 31: X: -575.014587 Y: -63.958847 Z: -169.415497
-Vertex 32: X: -518.167725 Y: -39.528744 Z: -120.204819
-Vertex 33: X: -518.167725 Y: 39.528721 Z: -120.204834
-Vertex 34: X: -575.014587 Y: 63.958801 Z: -169.415497
-Vertex 35: X: -338.509338 Y: -0.000035 Z: -335.963745
-Vertex 36: X: -335.172241 Y: -63.958858 Z: -289.614868
-Vertex 37: X: -329.772675 Y: -39.528751 Z: -214.620865
-Vertex 38: X: -329.772675 Y: 39.528713 Z: -214.620865
-Vertex 39: X: -335.172241 Y: 63.95879 Z: -289.614899
-Face list:
-Face 0: A:0 B:6 C:1 AB:0 BC:1 CA:1
-Smoothing: 1
-Face 1: A:0 B:5 C:6 AB:1 BC:1 CA:0
-Smoothing: 1
-Face 2: A:1 B:7 C:2 AB:0 BC:1 CA:1
-Smoothing: 2
-Face 3: A:1 B:6 C:7 AB:1 BC:1 CA:0
-Smoothing: 2
-Face 4: A:2 B:8 C:3 AB:0 BC:1 CA:1
-Smoothing: 3
-Face 5: A:2 B:7 C:8 AB:1 BC:1 CA:0
-Smoothing: 3
-Face 6: A:3 B:9 C:4 AB:0 BC:1 CA:1
-Smoothing: 4
-Face 7: A:3 B:8 C:9 AB:1 BC:1 CA:0
-
- Page 1
-
-
-
-Smoothing: 4
-Face 8: A:4 B:5 C:0 AB:0 BC:1 CA:1
-Smoothing: 5
-Face 9: A:4 B:9 C:5 AB:1 BC:1 CA:0
-Smoothing: 5
-Face 10: A:5 B:11 C:6 AB:0 BC:1 CA:1
-Smoothing: 6
-Face 11: A:5 B:10 C:11 AB:1 BC:1 CA:0
-Smoothing: 6
-Face 12: A:6 B:12 C:7 AB:0 BC:1 CA:1
-Smoothing: 7
-Face 13: A:6 B:11 C:12 AB:1 BC:1 CA:0
-Smoothing: 7
-Face 14: A:7 B:13 C:8 AB:0 BC:1 CA:1
-Smoothing: 8
-Face 15: A:7 B:12 C:13 AB:1 BC:1 CA:0
-Smoothing: 8
-Face 16: A:8 B:14 C:9 AB:0 BC:1 CA:1
-Smoothing: 9
-Face 17: A:8 B:13 C:14 AB:1 BC:1 CA:0
-Smoothing: 9
-Face 18: A:9 B:10 C:5 AB:0 BC:1 CA:1
-Smoothing: 10
-Face 19: A:9 B:14 C:10 AB:1 BC:1 CA:0
-Smoothing: 10
-Face 20: A:10 B:16 C:11 AB:0 BC:1 CA:1
-Smoothing: 11
-Face 21: A:10 B:15 C:16 AB:1 BC:1 CA:0
-Smoothing: 11
-Face 22: A:11 B:17 C:12 AB:0 BC:1 CA:1
-Smoothing: 12
-Face 23: A:11 B:16 C:17 AB:1 BC:1 CA:0
-Smoothing: 12
-Face 24: A:12 B:18 C:13 AB:0 BC:1 CA:1
-Smoothing: 13
-Face 25: A:12 B:17 C:18 AB:1 BC:1 CA:0
-Smoothing: 13
-Face 26: A:13 B:19 C:14 AB:0 BC:1 CA:1
-Smoothing: 14
-Face 27: A:13 B:18 C:19 AB:1 BC:1 CA:0
-Smoothing: 14
-Face 28: A:14 B:15 C:10 AB:0 BC:1 CA:1
-Smoothing: 15
-Face 29: A:14 B:19 C:15 AB:1 BC:1 CA:0
-Smoothing: 15
-Face 30: A:15 B:21 C:16 AB:0 BC:1 CA:1
-Smoothing: 16
-Face 31: A:15 B:20 C:21 AB:1 BC:1 CA:0
-Smoothing: 16
-Face 32: A:16 B:22 C:17 AB:0 BC:1 CA:1
-Smoothing: 17
-Face 33: A:16 B:21 C:22 AB:1 BC:1 CA:0
-Smoothing: 17
-Face 34: A:17 B:23 C:18 AB:0 BC:1 CA:1
-Smoothing: 18
-Face 35: A:17 B:22 C:23 AB:1 BC:1 CA:0
-Smoothing: 18
-Face 36: A:18 B:24 C:19 AB:0 BC:1 CA:1
-Smoothing: 19
-Face 37: A:18 B:23 C:24 AB:1 BC:1 CA:0
-Smoothing: 19
-
- Page 2
-
-
-
-Face 38: A:19 B:20 C:15 AB:0 BC:1 CA:1
-Smoothing: 20
-Face 39: A:19 B:24 C:20 AB:1 BC:1 CA:0
-Smoothing: 20
-Face 40: A:20 B:26 C:21 AB:0 BC:1 CA:1
-Smoothing: 21
-Face 41: A:20 B:25 C:26 AB:1 BC:1 CA:0
-Smoothing: 21
-Face 42: A:21 B:27 C:22 AB:0 BC:1 CA:1
-Smoothing: 22
-Face 43: A:21 B:26 C:27 AB:1 BC:1 CA:0
-Smoothing: 22
-Face 44: A:22 B:28 C:23 AB:0 BC:1 CA:1
-Smoothing: 23
-Face 45: A:22 B:27 C:28 AB:1 BC:1 CA:0
-Smoothing: 23
-Face 46: A:23 B:29 C:24 AB:0 BC:1 CA:1
-Smoothing: 24
-Face 47: A:23 B:28 C:29 AB:1 BC:1 CA:0
-Smoothing: 24
-Face 48: A:24 B:25 C:20 AB:0 BC:1 CA:1
-Smoothing: 25
-Face 49: A:24 B:29 C:25 AB:1 BC:1 CA:0
-Smoothing: 25
-Face 50: A:25 B:31 C:26 AB:0 BC:1 CA:1
-Smoothing: 26
-Face 51: A:25 B:30 C:31 AB:1 BC:1 CA:0
-Smoothing: 26
-Face 52: A:26 B:32 C:27 AB:0 BC:1 CA:1
-Smoothing: 27
-Face 53: A:26 B:31 C:32 AB:1 BC:1 CA:0
-Smoothing: 27
-Face 54: A:27 B:33 C:28 AB:0 BC:1 CA:1
-Smoothing: 28
-Face 55: A:27 B:32 C:33 AB:1 BC:1 CA:0
-Smoothing: 28
-Face 56: A:28 B:34 C:29 AB:0 BC:1 CA:1
-Smoothing: 29
-Face 57: A:28 B:33 C:34 AB:1 BC:1 CA:0
-Smoothing: 29
-Face 58: A:29 B:30 C:25 AB:0 BC:1 CA:1
-Smoothing: 30
-Face 59: A:29 B:34 C:30 AB:1 BC:1 CA:0
-Smoothing: 30
-Face 60: A:30 B:36 C:31 AB:0 BC:1 CA:1
-Smoothing: 31
-Face 61: A:30 B:35 C:36 AB:1 BC:1 CA:0
-Smoothing: 31
-Face 62: A:31 B:37 C:32 AB:0 BC:1 CA:1
-Smoothing: 32
-Face 63: A:31 B:36 C:37 AB:1 BC:1 CA:0
-Smoothing: 32
-Face 64: A:32 B:38 C:33 AB:0 BC:1 CA:1
-Smoothing: 1
-Face 65: A:32 B:37 C:38 AB:1 BC:1 CA:0
-Smoothing: 1
-Face 66: A:33 B:39 C:34 AB:0 BC:1 CA:1
-Smoothing: 2
-Face 67: A:33 B:38 C:39 AB:1 BC:1 CA:0
-Smoothing: 2
-Face 68: A:34 B:35 C:30 AB:0 BC:1 CA:1
-
- Page 3
-
-
-
-Smoothing: 3
-Face 69: A:34 B:39 C:35 AB:1 BC:1 CA:0
-Smoothing: 3
-Face 70: A:35 B:1 C:36 AB:0 BC:1 CA:1
-Smoothing: 4
-Face 71: A:35 B:0 C:1 AB:1 BC:1 CA:0
-Smoothing: 4
-Face 72: A:36 B:2 C:37 AB:0 BC:1 CA:1
-Smoothing: 5
-Face 73: A:36 B:1 C:2 AB:1 BC:1 CA:0
-Smoothing: 5
-Face 74: A:37 B:3 C:38 AB:0 BC:1 CA:1
-Smoothing: 6
-Face 75: A:37 B:2 C:3 AB:1 BC:1 CA:0
-Smoothing: 6
-Face 76: A:38 B:4 C:39 AB:0 BC:1 CA:1
-Smoothing: 7
-Face 77: A:38 B:3 C:4 AB:1 BC:1 CA:0
-Smoothing: 7
-Face 78: A:39 B:0 C:35 AB:0 BC:1 CA:1
-Smoothing: 8
-Face 79: A:39 B:4 C:0 AB:1 BC:1 CA:0
-Smoothing: 8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 4
-
-
-
+Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216 + +Named object: "Object01" +Tri-mesh, Vertices: 40 Faces: 80 +Vertex list: +Vertex 0: X: -50.170624 Y: -0.000026 Z: -240.147842 +Vertex 1: X: -80.584503 Y: -63.958851 Z: -205.014572 +Vertex 2: X: -129.795166 Y: -39.528744 Z: -148.16774 +Vertex 3: X: -129.795166 Y: 39.528721 Z: -148.16774 +Vertex 4: X: -80.584503 Y: 63.958797 Z: -205.014572 +Vertex 5: X: 85.963654 Y: -0.000002 Z: 31.490465 +Vertex 6: X: 39.614838 Y: -63.958828 Z: 34.827602 +Vertex 7: X: -35.37915 Y: -39.528728 Z: 40.227196 +Vertex 8: X: -35.37912 Y: 39.528736 Z: 40.227188 +Vertex 9: X: 39.614838 Y: 63.95882 Z: 34.827595 +Vertex 10: X: -9.852051 Y: 0.000023 Z: 319.829254 +Vertex 11: X: -44.985352 Y: -63.958805 Z: 289.415405 +Vertex 12: X: -101.832199 Y: -39.528709 Z: 240.204758 +Vertex 13: X: -101.832184 Y: 39.528755 Z: 240.204773 +Vertex 14: X: -44.985352 Y: 63.958843 Z: 289.415405 +Vertex 15: X: -281.490326 Y: 0.000035 Z: 455.963654 +Vertex 16: X: -284.827484 Y: -63.958794 Z: 409.614868 +Vertex 17: X: -290.227112 Y: -39.528702 Z: 334.62085 +Vertex 18: X: -290.227112 Y: 39.528763 Z: 334.62088 +Vertex 19: X: -284.827484 Y: 63.958855 Z: 409.614838 +Vertex 20: X: -569.829163 Y: 0.000026 Z: 360.14798 +Vertex 21: X: -539.415344 Y: -63.958801 Z: 325.014709 +Vertex 22: X: -490.204712 Y: -39.528709 Z: 268.167847 +Vertex 23: X: -490.204712 Y: 39.528755 Z: 268.167847 +Vertex 24: X: -539.415344 Y: 63.958847 Z: 325.014679 +Vertex 25: X: -705.963684 Y: 0.000002 Z: 88.509598 +Vertex 26: X: -659.614807 Y: -63.958824 Z: 85.172462 +Vertex 27: X: -584.62085 Y: -39.528725 Z: 79.77285 +Vertex 28: X: -584.62085 Y: 39.52874 Z: 79.77285 +Vertex 29: X: -659.614868 Y: 63.958824 Z: 85.172447 +Vertex 30: X: -610.147827 Y: -0.000023 Z: -199.829361 +Vertex 31: X: -575.014587 Y: -63.958847 Z: -169.415497 +Vertex 32: X: -518.167725 Y: -39.528744 Z: -120.204819 +Vertex 33: X: -518.167725 Y: 39.528721 Z: -120.204834 +Vertex 34: X: -575.014587 Y: 63.958801 Z: -169.415497 +Vertex 35: X: -338.509338 Y: -0.000035 Z: -335.963745 +Vertex 36: X: -335.172241 Y: -63.958858 Z: -289.614868 +Vertex 37: X: -329.772675 Y: -39.528751 Z: -214.620865 +Vertex 38: X: -329.772675 Y: 39.528713 Z: -214.620865 +Vertex 39: X: -335.172241 Y: 63.95879 Z: -289.614899 +Face list: +Face 0: A:0 B:6 C:1 AB:0 BC:1 CA:1 +Smoothing: 1 +Face 1: A:0 B:5 C:6 AB:1 BC:1 CA:0 +Smoothing: 1 +Face 2: A:1 B:7 C:2 AB:0 BC:1 CA:1 +Smoothing: 2 +Face 3: A:1 B:6 C:7 AB:1 BC:1 CA:0 +Smoothing: 2 +Face 4: A:2 B:8 C:3 AB:0 BC:1 CA:1 +Smoothing: 3 +Face 5: A:2 B:7 C:8 AB:1 BC:1 CA:0 +Smoothing: 3 +Face 6: A:3 B:9 C:4 AB:0 BC:1 CA:1 +Smoothing: 4 +Face 7: A:3 B:8 C:9 AB:1 BC:1 CA:0 + + Page 1 + + + +Smoothing: 4 +Face 8: A:4 B:5 C:0 AB:0 BC:1 CA:1 +Smoothing: 5 +Face 9: A:4 B:9 C:5 AB:1 BC:1 CA:0 +Smoothing: 5 +Face 10: A:5 B:11 C:6 AB:0 BC:1 CA:1 +Smoothing: 6 +Face 11: A:5 B:10 C:11 AB:1 BC:1 CA:0 +Smoothing: 6 +Face 12: A:6 B:12 C:7 AB:0 BC:1 CA:1 +Smoothing: 7 +Face 13: A:6 B:11 C:12 AB:1 BC:1 CA:0 +Smoothing: 7 +Face 14: A:7 B:13 C:8 AB:0 BC:1 CA:1 +Smoothing: 8 +Face 15: A:7 B:12 C:13 AB:1 BC:1 CA:0 +Smoothing: 8 +Face 16: A:8 B:14 C:9 AB:0 BC:1 CA:1 +Smoothing: 9 +Face 17: A:8 B:13 C:14 AB:1 BC:1 CA:0 +Smoothing: 9 +Face 18: A:9 B:10 C:5 AB:0 BC:1 CA:1 +Smoothing: 10 +Face 19: A:9 B:14 C:10 AB:1 BC:1 CA:0 +Smoothing: 10 +Face 20: A:10 B:16 C:11 AB:0 BC:1 CA:1 +Smoothing: 11 +Face 21: A:10 B:15 C:16 AB:1 BC:1 CA:0 +Smoothing: 11 +Face 22: A:11 B:17 C:12 AB:0 BC:1 CA:1 +Smoothing: 12 +Face 23: A:11 B:16 C:17 AB:1 BC:1 CA:0 +Smoothing: 12 +Face 24: A:12 B:18 C:13 AB:0 BC:1 CA:1 +Smoothing: 13 +Face 25: A:12 B:17 C:18 AB:1 BC:1 CA:0 +Smoothing: 13 +Face 26: A:13 B:19 C:14 AB:0 BC:1 CA:1 +Smoothing: 14 +Face 27: A:13 B:18 C:19 AB:1 BC:1 CA:0 +Smoothing: 14 +Face 28: A:14 B:15 C:10 AB:0 BC:1 CA:1 +Smoothing: 15 +Face 29: A:14 B:19 C:15 AB:1 BC:1 CA:0 +Smoothing: 15 +Face 30: A:15 B:21 C:16 AB:0 BC:1 CA:1 +Smoothing: 16 +Face 31: A:15 B:20 C:21 AB:1 BC:1 CA:0 +Smoothing: 16 +Face 32: A:16 B:22 C:17 AB:0 BC:1 CA:1 +Smoothing: 17 +Face 33: A:16 B:21 C:22 AB:1 BC:1 CA:0 +Smoothing: 17 +Face 34: A:17 B:23 C:18 AB:0 BC:1 CA:1 +Smoothing: 18 +Face 35: A:17 B:22 C:23 AB:1 BC:1 CA:0 +Smoothing: 18 +Face 36: A:18 B:24 C:19 AB:0 BC:1 CA:1 +Smoothing: 19 +Face 37: A:18 B:23 C:24 AB:1 BC:1 CA:0 +Smoothing: 19 + + Page 2 + + + +Face 38: A:19 B:20 C:15 AB:0 BC:1 CA:1 +Smoothing: 20 +Face 39: A:19 B:24 C:20 AB:1 BC:1 CA:0 +Smoothing: 20 +Face 40: A:20 B:26 C:21 AB:0 BC:1 CA:1 +Smoothing: 21 +Face 41: A:20 B:25 C:26 AB:1 BC:1 CA:0 +Smoothing: 21 +Face 42: A:21 B:27 C:22 AB:0 BC:1 CA:1 +Smoothing: 22 +Face 43: A:21 B:26 C:27 AB:1 BC:1 CA:0 +Smoothing: 22 +Face 44: A:22 B:28 C:23 AB:0 BC:1 CA:1 +Smoothing: 23 +Face 45: A:22 B:27 C:28 AB:1 BC:1 CA:0 +Smoothing: 23 +Face 46: A:23 B:29 C:24 AB:0 BC:1 CA:1 +Smoothing: 24 +Face 47: A:23 B:28 C:29 AB:1 BC:1 CA:0 +Smoothing: 24 +Face 48: A:24 B:25 C:20 AB:0 BC:1 CA:1 +Smoothing: 25 +Face 49: A:24 B:29 C:25 AB:1 BC:1 CA:0 +Smoothing: 25 +Face 50: A:25 B:31 C:26 AB:0 BC:1 CA:1 +Smoothing: 26 +Face 51: A:25 B:30 C:31 AB:1 BC:1 CA:0 +Smoothing: 26 +Face 52: A:26 B:32 C:27 AB:0 BC:1 CA:1 +Smoothing: 27 +Face 53: A:26 B:31 C:32 AB:1 BC:1 CA:0 +Smoothing: 27 +Face 54: A:27 B:33 C:28 AB:0 BC:1 CA:1 +Smoothing: 28 +Face 55: A:27 B:32 C:33 AB:1 BC:1 CA:0 +Smoothing: 28 +Face 56: A:28 B:34 C:29 AB:0 BC:1 CA:1 +Smoothing: 29 +Face 57: A:28 B:33 C:34 AB:1 BC:1 CA:0 +Smoothing: 29 +Face 58: A:29 B:30 C:25 AB:0 BC:1 CA:1 +Smoothing: 30 +Face 59: A:29 B:34 C:30 AB:1 BC:1 CA:0 +Smoothing: 30 +Face 60: A:30 B:36 C:31 AB:0 BC:1 CA:1 +Smoothing: 31 +Face 61: A:30 B:35 C:36 AB:1 BC:1 CA:0 +Smoothing: 31 +Face 62: A:31 B:37 C:32 AB:0 BC:1 CA:1 +Smoothing: 32 +Face 63: A:31 B:36 C:37 AB:1 BC:1 CA:0 +Smoothing: 32 +Face 64: A:32 B:38 C:33 AB:0 BC:1 CA:1 +Smoothing: 1 +Face 65: A:32 B:37 C:38 AB:1 BC:1 CA:0 +Smoothing: 1 +Face 66: A:33 B:39 C:34 AB:0 BC:1 CA:1 +Smoothing: 2 +Face 67: A:33 B:38 C:39 AB:1 BC:1 CA:0 +Smoothing: 2 +Face 68: A:34 B:35 C:30 AB:0 BC:1 CA:1 + + Page 3 + + + +Smoothing: 3 +Face 69: A:34 B:39 C:35 AB:1 BC:1 CA:0 +Smoothing: 3 +Face 70: A:35 B:1 C:36 AB:0 BC:1 CA:1 +Smoothing: 4 +Face 71: A:35 B:0 C:1 AB:1 BC:1 CA:0 +Smoothing: 4 +Face 72: A:36 B:2 C:37 AB:0 BC:1 CA:1 +Smoothing: 5 +Face 73: A:36 B:1 C:2 AB:1 BC:1 CA:0 +Smoothing: 5 +Face 74: A:37 B:3 C:38 AB:0 BC:1 CA:1 +Smoothing: 6 +Face 75: A:37 B:2 C:3 AB:1 BC:1 CA:0 +Smoothing: 6 +Face 76: A:38 B:4 C:39 AB:0 BC:1 CA:1 +Smoothing: 7 +Face 77: A:38 B:3 C:4 AB:1 BC:1 CA:0 +Smoothing: 7 +Face 78: A:39 B:0 C:35 AB:0 BC:1 CA:1 +Smoothing: 8 +Face 79: A:39 B:4 C:0 AB:1 BC:1 CA:0 +Smoothing: 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page 4 + + + diff --git a/progs/tests/Makefile b/progs/tests/Makefile index 8196c1b348..7053ebc86a 100644 --- a/progs/tests/Makefile +++ b/progs/tests/Makefile @@ -30,6 +30,7 @@ SOURCES = \ bug_3050.c \ bug_3101.c \ bug_3195.c \ + calibrate_rast.c \ copypixrate.c \ crossbar.c \ cva.c \ diff --git a/progs/tests/calibrate_rast.c b/progs/tests/calibrate_rast.c new file mode 100644 index 0000000000..37d8ac85e5 --- /dev/null +++ b/progs/tests/calibrate_rast.c @@ -0,0 +1,395 @@ +/* + * Automatic primitive rasterization precision test. + * + * Draw prims at various sub-pixel offsets and examine where the quad is + * actually drawn. + * Check if the range of offsets which paint the right pixels falls within + * OpenGL's specification. + * In case of failures, report the coordinate bias needed to fix the problem. + * + * Note that even Mesa/swrast fails some line tests. This is because some + * window coordinates wind up as 53.9999 instead of 54, for example. Enabling + * the small translation factor below fixes that. Revisit someday... + * + * Brian Paul + * 28 Feb 2008 + */ + + +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> +#include <GL/glut.h> + + +static int Width = 100, Height = 100; +static int Win; +static float Step = 0.125; +#if 0 +/* This tiny offset fixes errors in Mesa/Xlib */ +static float Xtrans = 0.5 * 0.125; +static float Ytrans = 0.5 * 0.125; +#else +static float Xtrans = 0.0; +static float Ytrans = 0.0; +#endif + + +static void +PointCalibrate(int xpos, int ypos) +{ + GLfloat rgba[4]; + float x, y; + float xmin, ymin, xmax, ymax; + + xmin = ymin = 1000.0; + xmax = ymax = -1000.0; + + for (y = -1.0; y <= 1.0; y += Step) { + for (x = -1.0; x <= 1.0; x += Step) { + glClear(GL_COLOR_BUFFER_BIT); + glBegin(GL_POINTS); + glVertex2f(xpos + x, ypos + y); + glEnd(); + glReadPixels(xpos, ypos, 1, 1, GL_RGBA, GL_FLOAT, rgba); + if (rgba[0] == 1.0 && rgba[1] == 1.0 && rgba[2] == 1.0) { + /* hit */ + if (x < xmin) + xmin = x; + if (y < ymin) + ymin = y; + if (x > xmax) + xmax = x; + if (y > ymax) + ymax = y; + } + } + } + + printf("Point at (%2d, %2d) drawn for x in [%6.3f, %6.3f] and y in [%6.3f, %6.3f]\n", + xpos, ypos, + xpos + xmin, xpos + xmax, + ypos + ymin, ypos + ymax); + + if (xmax - xmin != 1.0 - Step) { + printf(" => Inconsistant X-axis rasterization!\n"); + } + if (ymax - ymin != 1.0 - Step) { + printf(" => Inconsistant Y-axis rasterization!\n"); + } + if (xmin < 0.0) { + printf(" => Points should be X biased by about %f\n", xmin); + } + if (ymin < 0.0) { + printf(" => Points should be Y biased by about %f\n", ymin); + } + if (xmax > 1.0) { + printf(" => Points should be X biased by about %f\n", 1.0 - xmax); + } + if (ymax > 1.0) { + printf(" => Points should be Y biased by about %f\n", 1.0 - ymax); + } + +} + + +/** + * XXX Implement VLineCalibrate() someday + */ +static void +HLineCalibrate(int xpos, int ypos, int len) +{ + GLfloat rgba[2][4]; + float x, y; + float ymin, ymax; + float xmin_left, xmax_left, xmin_right, xmax_right; + + xmin_left = xmin_right = 1000.0; + xmax_left = xmax_right = -1000.0; + ymin = 1000; + ymax = -1000.0; + + /* + * First, check vertical positioning of the horizontal line + */ + for (y = -1.0; y <= 1.0; y += Step) { + glClear(GL_COLOR_BUFFER_BIT); + glBegin(GL_LINES); + glVertex2f(xpos, ypos + y); + glVertex2f(xpos + len, ypos + y); + glEnd(); + + glReadPixels(xpos + len / 2, ypos, 1, 1, GL_RGBA, GL_FLOAT, rgba); + if (rgba[0][0] == 1.0) { + /* hit */ + if (y < ymin) + ymin = y; + if (y > ymax) + ymax = y; + } + } + + printf("H-line at Y=%2d drawn for y in [%6.3f, %6.3f]\n", + ypos, + ypos + ymin, ypos + ymax); + + if (ymax - ymin != 1.0 - Step) { + printf(" => Inconsistant Y-axis rasterization!\n"); + } + + if (ymin > 0.5 ) { + printf(" => Lines should be Y biased by about %f\n", ymin - 0.5); + } + + if (ymax < 0.5 ) { + printf(" => Lines should be Y biased by about %f\n", 0.5 - ymax); + } + + /* + * Second, check endpoints (for Y at 1/2 pixel) + */ + for (x = -1.0; x <= 1.0; x += Step) { + glClear(GL_COLOR_BUFFER_BIT); + glBegin(GL_LINES); + glVertex2f(xpos + x, ypos + 0.5f); + glVertex2f(xpos + x + len, ypos + 0.5f); + glEnd(); + + /* left end */ + glReadPixels(xpos - 1, ypos, 2, 1, GL_RGBA, GL_FLOAT, rgba); + if (rgba[0][0] == 0.0 && rgba[1][0] == 1.0) { + /* hit */ + if (x < xmin_left) + xmin_left = x; + if (x > xmax_left) + xmax_left = x; + } + + /* right end */ + glReadPixels(xpos + len - 1, ypos, 2, 1, GL_RGBA, GL_FLOAT, rgba); + if (rgba[0][0] == 1.0 && rgba[1][0] == 0.0) { + /* hit */ + if (x < xmin_right) + xmin_right = x; + if (x > xmax_right) + xmax_right = x; + } + } + + printf("H-line [%d..%d) hit left end for x in [%6.3f, %6.3f] " + "hit right end for x in [%6.3f, %6.3f]\n", + xpos, xpos + len, + xpos + xmin_left, xpos + xmax_left, + xpos + len + xmin_right, xpos + len + xmax_right); + + if (xmax_left - xmin_left > 1.0 - Step) { + printf(" => Inconsistant left-end rasterization!\n"); + } + if (xmax_right - xmin_right > 1.0 - Step) { + printf(" => Inconsistant right-end rasterization!\n"); + } + + if (xmin_left != xmin_right || + xmax_left != xmax_right) { + printf(" => Inconsistant length!\n"); + } + + if (xmin_left < 0.0) { + printf(" => Coords should be X biased by about %f\n", xmin_left ); + } + if (xmin_right < 0.0) { + printf(" => Coords should be X biased by about %f\n", xmin_right ); + } + if (xmax_left >= 1.0) { + printf(" => Coords should be X biased by about %f\n", -xmax_right + 1.0); + } + if (xmax_right >= 1.0) { + printf(" => Coords should be X biased by about %f\n", -xmax_right + 1.0); + } + +} + + +static void +QuadCalibrate(int xpos, int ypos, int width, int height) +{ + GLfloat rgba1[2][4]; + GLfloat rgba2[2][4]; + float x, y; + float xmin, ymin, xmax, ymax; + + xmin = ymin = 1000.0; + xmax = ymax = -1000.0; + + for (y = -1.0; y <= 1.0; y += Step) { + for (x = -1.0; x <= 1.0; x += Step) { + glClear(GL_COLOR_BUFFER_BIT); + glBegin(GL_QUADS); + glVertex2f(xpos + x, ypos + y); + glVertex2f(xpos + x + width, ypos + y); + glVertex2f(xpos + x + width, ypos + y + height); + glVertex2f(xpos + x, ypos + y + height); + glEnd(); + + /* horizontal measurement */ + glReadPixels(xpos - 1, ypos + 2, 2, 1, GL_RGBA, GL_FLOAT, rgba1); + glReadPixels(xpos + width - 1, ypos + 2, 2, 1, GL_RGBA, GL_FLOAT, rgba2); + if (rgba1[0][0] == 0.0 && rgba1[1][0] == 1.0 && + rgba2[0][0] == 1.0 && rgba2[1][0] == 0.0) { + if (x < xmin) + xmin = x; + if (x > xmax) + xmax = x; + } + + /* vertical measurement */ + glReadPixels(xpos + 2, ypos - 1, 1, 2, GL_RGBA, GL_FLOAT, rgba1); + glReadPixels(xpos + 2, ypos + height - 1, 1, 2, GL_RGBA, GL_FLOAT, rgba2); + if (rgba1[0][0] == 0.0 && rgba1[1][0] == 1.0 && + rgba2[0][0] == 1.0 && rgba2[1][0] == 0.0) { + if (y < ymin) + ymin = y; + if (y > ymax) + ymax = y; + } + } + } + + printf("Quad at (%2d, %2d)..(%2d, %2d) drawn" + " for x in [%6.3f, %6.3f] and y in [%6.3f, %6.3f]\n", + xpos, ypos, + xpos + width, ypos + height, + xpos + xmin, xpos + xmax, + ypos + ymin, ypos + ymax); + + if (xmax - xmin != 1.0 - Step) { + printf(" => Inconsistant X-axis rasterization/size!\n"); + } + if (ymax - ymin != 1.0 - Step) { + printf(" => Inconsistant Y-axis rasterization/size!\n"); + } + + if (xmin < -0.5) { + printf(" => Coords should be X biased by about %f\n", 0.5 + xmin ); + } + if (ymin < -0.5) { + printf(" => Coords should be Y biased by about %f\n", 0.5 + ymin); + } + if (xmax > 0.5) { + printf(" => Coords should be X biased by about %f\n", -xmax + 0.5); + } + if (ymax > 0.5) { + printf(" => Coords should be Y biased by about %f\n", -ymax + 0.5); + } +} + + +/** + * Misc/disabled code for debugging. + */ +static void +DebugTest(void) +{ + glClear(GL_COLOR_BUFFER_BIT); + glEnable(GL_BLEND); + glBlendFunc(GL_ONE, GL_ONE); + + glColor3f(.5, .5, .5); + + glBegin(GL_LINES); + glVertex2f(30, 35.5); + glVertex2f(54, 35.5); + glVertex2f(54, 35.5); + glVertex2f(66, 35.5); + glEnd(); + + glDisable(GL_BLEND); + glColor3f(1,1,1); +} + + +static void +Draw(void) +{ + glClear(GL_COLOR_BUFFER_BIT); + + glPushMatrix(); + glTranslatef(Xtrans, Ytrans, 0); + + PointCalibrate(1, 1); + PointCalibrate(50, 50); + PointCalibrate(28, 17); + PointCalibrate(17, 18); + printf("\n"); + + HLineCalibrate(5, 10, 10); + HLineCalibrate(25, 22, 12); + HLineCalibrate(54, 33, 12); + HLineCalibrate(54+12, 33, 12); + printf("\n"); + + QuadCalibrate(2, 2, 10, 10); + QuadCalibrate(50, 50, 10, 10); + QuadCalibrate(28, 17, 12, 12); + QuadCalibrate(17, 28, 12, 12); + + (void) DebugTest; + + glPopMatrix(); + + glutSwapBuffers(); +} + + +static void +Reshape(int width, int height) +{ + Width = width; + Height = height; + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, width, 0, height, -1, 1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +} + + +static void +Key(unsigned char key, int x, int y) +{ + (void) x; + (void) y; + switch (key) { + case 27: + glutDestroyWindow(Win); + exit(0); + break; + } + glutPostRedisplay(); +} + + +static void +Init(void) +{ + printf("Measurement/callibration for basic prim rasterization...\n"); + printf("GL_RENDERER: %s\n", (char*) glGetString(GL_RENDERER)); +} + + +int +main(int argc, char *argv[]) +{ + glutInit(&argc, argv); + glutInitWindowPosition(0, 0); + glutInitWindowSize(Width, Height); + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); + Win = glutCreateWindow(argv[0]); + glutReshapeFunc(Reshape); + glutKeyboardFunc(Key); + glutDisplayFunc(Draw); + Init(); + glutMainLoop(); + return 0; +} |