Modifizierter, beschleunigter Rastergenerator fr Calamus¾ SL ============================================================== ½ 1994 by Delirium Arts, Alvar Freude Original ½ by DMC GmbH Unter der Voraussetzung, daž dieser Text unver„ndert und vollst„ndig bernommen wird, darf der beschleunigte Rastergenerator von Calamus¾ SL-Anwendern kostenlos weitergegeben und genutzt werden. Der kosten- pflichtige Vertrieb wie beispielsweise ber PD-Versender o.„. bedarf meiner schriftlichen Genehmigung (Adresse siehe Ende des Textes)! Ich habe darauf geachtet, daž das Ergebnis dem des Originals entspricht. Bei verschiedenen Belichtungen von Vierfarbs„tzen habe ich bisher noch keine Probleme gehabt. Trotzdem ein wichtiger Hinweis: Ich, Alvar Freude, bernehme keine Haftung fr irgendwelche direkten oder indirekten Sch„den -- einschliežlich aber nicht beschr„nkt auf materielle oder finanzielle -- die durch die Benutzung dieses Calamus¾ SL-Modules oder seine Untauglichkeit fr einen bestimmten Zweck entstehen. Es handelt sich bei diesem Calamus¾-Modul um die disassemblierte und modifizierte Variante des Originals von DMC. Die Verbreitung ist von DMC gestattet worden. Hardwarevorraussetzungen: ========================= TOS-Rechner mit MC68020-Prozessor oder h”her sowie mind. MC68881 Coprozessor Also: dieses Calamus¾-Modul ist auf TT, Medusa T40, Falcon 030 mit Coprozessor, diversen Beschleunigerboards mit Coprozessor usw. lauff„hig. Auf STs oder Falcons ohne Coprozessor l„žt es sich nicht installieren. So, nachdem das nun gekl„rt ist: Installation: ============= Einfach RASX_GEN.CXM in dem Modulordner von Calamus¾ SL kopieren. Nun Calamus¾ SL starten. Externe Modulliste aufrufen (ALT+X), den "Rastergenerator" l”schen und "RASX_GEN.CXM" laden. Dann die "Einstellungen Sichern". Damit l„dt Calamus¾ SL bei jedem Start automatisch den beschleunigten Rastergenerator nach. Was macht der beschleunigte Rastergenerator? ============================================ Die Generierung der *Rasterzellen* von Calamus wird etwa um den Faktor 20-30 beschleunigt. Das heižt natrlich noch lange nicht, daž damit auch das Belichten oder Ausdrucken eines Dokumentes 20-30 mal schneller wird! Wie diese Rasterzellen aussehen, wird im Rastergenerator eingestellt. Diese werden bei der Ausgabe dann berechnet. Je nach Rasterwinkel sind diese Raster (intern "Filter" genannt) unterschiedlich grož -- dies kann mit dem "Gr”žen-Faktor" neben der Rasterweite/Winkel eingestellt werden. Je gr”žer ein Filter ist, desto l„nger braucht natrlich auch seine Generierung. Wird nicht im Farbbereich gearbeitet, so wird in der Regel ein 45ø-Raster genommen. Fr solche Raster kann der Filter sehr klein sein, also geht auch die Generierung sehr schnell. Da macht es natrlich auch kaum einen Unterschied, ob nun 5 Sekunden oder 0.2 Sekunden gebraucht werden. Bei speziellen Rastern oder insbesondere im Farbbereich sieht das ganze allerdings ganz anders aus. Dort werden die Filter schnell grož, will man exakte Winkel erreichen. Bisher konnte es da passieren, daž Calamus¾ bei der Ausgabe eines Vierfarbsatzes auch mal mehr als eine Stunde an der Berechnung der Raster arbeitete. Dies wird jetzt auf wenige Minuten reduziert. Man kann brigends beobachten, wann Calamus¾ mit dem Generieren der Raster besch„ftigt ist: die Maus verwandelt sich w„hrend des ersten Teiles in einen animierten Rechenschieber, danach in die nette, dampfende Kaffetasse. šbrigens: Beim beschleunigten Rastergenerator habe ich die Animationsgeschwindigkeit der Maus herabgesetzt, zum einen um etwas Rechenzeit zu sparen, zum anderen damit die Maus nicht allzu "nerv”s" herumzappen zu lassen. Die Geschwindigkeit der Mausanimation ist also nicht unbedingt beschleunigt worden... Weiterhin werden die Raster von Calamus¾ nach dem Generieren ins Dokument eingebunden und auch mit abgespeichert. Ein einmal generiertes Raster muž in der Regel bei gleichem Dokument (!) also nicht mehr neu generiert werden! Der Cachende Rastergenerator -- der in Deutschland von DIVIS in K”ln vertrieben wird -- speichert einmal generierte Raster ab. Wird das gleiche Raster sp„ter nochmal ben”tigt, so muž es nicht neu berechnet sondern nur von Festplatte geladen werden. Das ist natrlich trotzdem schneller als die Neuegenerierung mit dem modifizierten Raster- generator von mir. Muž der Cachende Rastergenerator die Raster allerdings neu generieren, weil sie nicht gespeichert sind, so ist er natrlich genauso langsam wie der alte, bei Calamus¾ SL mitgelieferte. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Also nochmal: * * ============= * * Dieser Rastergenerator bringt nur einen merklichen Geschwindigkeits- * * gewinn bei komplexen Rastern, insbesondere im Farbbereich. Aber auch * * bei groben Effektrastern (2er-Raster oder so) wirkt sich der Ge- * * schwindigkeitsvorteil aus. Sind die Rasterzellen generiert, bleibt * * alles beim alten. * * Der Cachende Rastergenerator ist schneller, wenn das Betreffende * * Raster bereits generiert und abgespeichert wurde. * * Die direkte Bildausgabe wird mit diesem Modul NICHT beschleunigt, * * nur die GENERIERUNG der Rasterzellen. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Wenn jemand feststellt, daž der beschleunigte Rastergenerator nicht schneller sein solle, dann liegt das daran, daž er entweder nur einfache Raster verwendet, daž die Raster bereits im Dokument gespeichert waren oder daž beim Testen irgendetwas falsch gemacht wurde. Normalerweise ist der beschleunigte Rastergenerator rund 30-50 mal schneller als der originale (z.B. 8 Sekunden statt 6 Minuten). Will jemand den Geschwindigkeitsvorteil genau testen, kann er folgendermažen vorgehen: - Beschleunigten Rastergenerator laden. - Grafikkarte auf 16 (oder 2) Farben stellen, denn nur da kann man die Raster auf dem Bildschirm auch sehen. - Unter "Diverses" "Rasterung auf Bildschirm" anschalten. - Ein neues Dokument anlegen und einen Rasterfl„chenrahmen aufziehen (Farbe im CYMK-Modus, CYM nicht als Vollfl„che, sondern z.B. je 25%) - Im Rastergenerator z.B. ein beim Sommerupdate 1993 mitgelieferten Raster im Ordner RUEDIGER\ laden. - Dokument Speichern. - Nun die Vergr”žerung auf 1000% stellen (ALT+J); mit ALT+Mausclick in die Rasterfl„che reinzoomen. Nun wird das Raster generiert, bei oben genanntem Raster braucht das rund 15 Sekunden (TT). - Rastergenerator l”schen und den Originalen ersetzen. - Dokument Verwerfen; die alte Version des Dokumentes wird reingeladen, es sollten keine bereits generierten Raster mitgespeichert worden sein. - Nun wieder mit ALT+Mausclick in die Rasterfl„che Zoomen. Das braucht nun mehrere Minuten... Hat man nur 2 Farben, wird nur das Raster fr den Schwarz-Film generiert. Da dies meist nicht sehr komplex ist, geht das auch so schnell. Also stellt man z.B. ein 28er Raster, Winkel 45ø ein. Dann stellt man 20000-Fache Vergr”žerung ein (ALT+J) und zoomed mit ALT+Mausclick nah heran. Kann jemand seine Grafikkarte nicht auf 16 oder 2 Farben stellen, so kann er es auch mit einer Dummy-Belichtung probieren: Dokument wie oben anlegen, kleinen Teiledruckrahmen aufziehen (1x1 cm), diesen Teiledruckrahmen dummy-Belichten bei 1270 DPI (Farbauszge anw„hlen). Wieso ist der Rastergenerator schneller? ======================================== Dieser Rastergenerator ist von der Funktionsweise her v”llig identisch mit dem Original von DMC. Ich habe den alten Disassembliert (nach Maschinensprache Rckbersetzt) und modifiziert. Da das Original in C geschrieben ist und weder den Coprozessor noch die erweiterten Befehle vom MC68030 (oder auch schon MC68020) ausnutzt, war der erste Schritt das Ersetzen der Fliežkommaemulation durch echte Fliežkomma- operationen. Danach habe ich die Kernroutinen auf Assemblerebene optimiert und um MC68020er-Code erg„ntzt. Viel schneller geht es ohne Žnderung des Algorithmus wohl kaum noch. Optimal beschleunigt wurde nur die Generierung der kreisf”rmigen Rasterpunkte. Die Generierung der dreieckigen und quadratischen Rasterpunkte k”nnte im ersten Teil (Rechenschieber) noch rund 2-5 mal schneller gemacht werden, aber da das sowieso kaum jemand braucht, habe ich mir das erspart. Es geht ja auch so schon relativ schnell. Die Assembleroptimierungen haben brigens auch zur Folge, daž der Programmcode nun etwas krzer ist. Entwicklungsumgebung: TurboAss, mit Hilfe meiner Floatingpoint-"Library" Pure Profiler Noch ein paar Hinweise zum Rastergenerator allgemein: ===================================================== Wild durcheinandergewrfelt noch ein paar Tips ;-) Ein weit verbreiteter Irrglaube ist, daž eine h”here Scannaufl”sung als etwa die drei- bis fnffache Rasterweite in lpcm (also rund 200-300 DPI bei einem 60er-Raster)nichts mehr an Bildsch„rfe bringt. Das stimmt fr Calamus¾ NICHT! Bei Calamus¾ werden, im Gegensatz zu vielen (nicht allen) PostScript-RIPs die Rasterpunkte bei der Ausgabe "angeschnitten". Erst wenn die Ausgabeaufl”sung berschritten wird, bringt der ganze Spaž natrlich nichts mehr. Diesen Effekt kann man sich anschauen, wenn man sehr nah an ein Phoo ranzoomed (ca. 10000-fache Vergr”žerung oder mehr). Die Rasterpunkte sind teilweise "Ausgefleddert", dies ist aber vollkommen korrekt. Gute bis sehr gute Bilder erziehlt man mit rund 300 DPI Bildaufl”sung; will man eine perfekte Qualit„t, kann man auch auf 400 DPI oder mehr hochgegen, insbesondere bei Kontrastreichen Bildern. Allerdings steigen dann natrlich die Datenmengen sowie die Belichtungszeiten stark an. Nimmt man nur ein 30er oder 40er-Raster (z.B. fr Zeitungen), so kann man mit der Bildaufl”sung etwas herunter gehen. Ist das Bild aber sehr Kontrastreich (z.B. schwarzer Strich auf hellem Grund oder scharfe Kanten) kann man auch bei niedriger Rasterweite die Pixel sehen. Aber um das genau beurteilen zu k”nnen, kann man bei Calamus¾ SL ja in Belichteraufl”sung (oder in der H„lfte, da kriegt man mehr auf den Schirm) kontrollieren, ob irgendwo Treppen sichtbar sind... Mit Hilfe der "Punktverzerrung" kann man die Qualit„t der Raster erh”hen. Bew„hrt hat sich dabei ein Wert von ca. 0.80 bzw. 1.25 (Kehrwert). Man erh„lt dann einen sog. "Kettenpunkt", d.h. der Punktschluž (da, wo sich benachbarte Punkte zum ersten mal berhren) ist auf zwei verschiedene Tonwerte aufgeteilt. (Am besten mal einen Verlauf anschauen, wenn die Rasterpunkte sehr grož sind). So l„žt sich der typische Tonwertsprung im 50%-Bereich bei rund/ quadratischen Rastern eingrenzen bzw. auf zwei Bereiche verteilen. Dies tritt verst„rkt dann auf, wenn der Tonwertzuwahs relativ hoch ist (feines Raster, nicht optimale Druckmaschine bzw. schlechtere Papierqualit„t). Viele Postscript-RIPs verwenden brigens einen durchgehend runden Rasterpunkt. Dort tritt der Punktschluž folglich erst bei knapp 80% ein; in den Tiefen ist dies natrlich viel unsch”ner. PostScript Level 2 beherrscht allerdings schon die klassische Rasterpunktform (Kreis->Quadrat), aber scheinbar keine Punktverzerrung! In PAGE 12/91 Seite 164ff. wird der Vorteil der Punktverzerrung genauer erl„utert. Allerdings wird dort in keinem Wort Calamus¾ erw„hnt, sondern nur gejubelt, daž PostScript irgendwann den Anforderungen "professoineller Repro- und Drucktechnik gengen" wird. Calamus¾ konnte das schon damals... Umrechnung von Rastern: Die Raterwerte k”nnen fr verschiedene Ausgabeaufl”sungen NICHT beibehalten werden. Es kann ansonsten zu unsch”nen Moirees kommen. Zur Umrechnung werden die Rasterwinkel beibehalten, nur die Rasterweiten werden angepasst. Dies muž natrlich fr jede Farbe extra gemacht werden (die Rasterweiten sind meist unterschiedlich)! Man geht nach folgender Formel vor: q_dpi: Quell-DPI, Aufl”sung des Original-Ausgabeger„tes z_dpi: Ziel-DPI, Aufl”sung des neuen Ausgabeger„tes alt_rw: alte Rasterweite neu_rw: neue Rasterweite z_dpi neu_rw = ------- * alt_rw q_dpi Beispiel: Rasterwert fr Linotype-Belichter, Aufl”sung 2540 DPI. Umrechnung auf AGFA-Belichter, Aufl”sung 2400 DPI. q_dpi=2540 z_dpi=2400 alt_rw=58.9 (Winkel: 45.0ø) 2400 neu_rw = ------ * 58.9 = 0.94488 * 58.9 2540 neu_rw = 55.65 lpcm ===== Oder umgekehrt: q_dpi=2400 z_dpi=2540 alt_rw=60.74 (Winkel: 45.0ø) 2540 neu_rw = ------ * 60.74 = 1.05833 * 60.74 2400 neu_rw = 64.28 lpcm ===== Die Werte 60.74 lpcm bzw. 55.65 lpcm (2400 DPI) und 58.9 lpcm bzw. 64.28 lpcm (2540 DPI) haben sich in der Praxis bei s/w-Belichtungen bew„hrt. Die Rasterweite kann man in der Regel immer durch eine ganze Zahl teilen, also z.B. die H„lfte oder ein Zehntel nehmen, ohne daž die Rasterqualit„t schlecht wird; also z.B. 30.37 oder 6.07 bei 2400 DPI. Letzteres ist natrlich fr Effekte gedacht. Calamus¾ dreht bei gedrehter Ausgabe brigens die Rasterwinkel NICHT mit. Stellt man nun bei einer A4-Seite die Punktverzerrung auf 0.800, so kommen die Kettenpunkte von links oben und gehen nach rechts unten. Belichtet ist es aber oft anders herum: die Seite wurde beim Belichten gedreht (spart Film), die Raster wurden aer nicht mitgedreht. Daher sollte man dann den KEHRWERT der Punktverzerrung nehmen (bei 45.0ø), dann stimmt alles wieder (hier also 1.250), damit die "Richtung" stimmt. Vielleicht werde ich in einer n„chsten Version ein kleines Beispiel-Dokument zu den Raster-Tips erstellen. Zu guter letzt noch meine Anschrift, falls jemand Rckfragen oder Probleme haben sollte. Bei Bugreports bitte immer komplette Konfiguration angeben (Speicher, welcher Belichter bzw. Drucker, Aufl”sung, Rasterkonfiguration usw. usf.). Alvar Freude Hoftstatt 23 74226 Nordheim MausNet: Alvar Freude @ HN Internet: Alvar_Freude@hn.maus.de Bankverbindung (Spenden werden natrlich gerne angenommen... ;-) ): Kreissparkasse Heilbronn BLZ 620 500 00 Konto 709 363 Viel Spaž und Erfolg weiterhin mit Calamus¾ SL! Delirium Arts wnscht einen Sch”nen Tag. === Calamus¾ ist eingetragenes Warenzeichen der Firma DMC GmbH, Walluf PostScript ist das, was dem Manuskript folgt: meistens Chaos.