[Projekt] Mein STL-Viewer

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.

Re: [Projekt] Mein STL-Viewer

Beitragvon Jonathan » 04.06.2018, 22:51

joah, tut ganz gut :)
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
 
Beiträge: 1221
Registriert: 04.08.2004, 20:06

Re: [Projekt] Mein STL-Viewer

Beitragvon Krishty » 12.07.2018, 23:43

Wieder eine neue Version:

https://papas-best.com/stlviewer_en#download

Mit Bugfix und verbessertem Antialiasing.


Hintergrund und eine Empfehlung für D3D-Programmierer:

Ein User hat sich bei mir gemeldet, weil der Viewer abstürzt. Er hat mir seinen Crash Dump gesendet, und der sah erstmal recht merkwürdig aus – D3D war zu zwei Dritteln initialisiert, aber die Objekte waren total kaputt.

Das war die Folge von drei kleinen Fehlern:

  • Ich habe blind Antialiasing auf 4× gestellt. Schließlich garantiert D3D ab 10.1, dass jede GPU mindestens 4× unterstützt! Nur habe ich vor geraumer Zeit die Hardware-Anforderungen auf 10.0 gesenkt … und tadaaa, da ist Antialiasing komplett optional. Der User hatte nur 10.0.

  • Die Swap Chain ließ sich problemlos mit 4×MSAA erstellen. Der Depth Buffer jedoch nicht. (WTF?! Komischer Treiber, aber … ist halt erlaubt.)

  • Dafür hatte ich Fehlerbehandlung, aber die enthielt einen Flüchtigkeitsfehler beim Setzen eines Zeigers. Dadurch funktionierte sie nur einmal. Mein Viewer beginnt sofort beim Start in einem separaten Thread mit dem Laden von D3D, weil das so ewig lange dauert (erster Versuch, hinterlässt kaputten Zeiger) und beim Laden einer Datei dann nochmal (zweiter Versuch erwischt kaputten Zeiger). Crash.

  • Der Treiber unterstützt nur 32 MiB VRAM, obwohl D3D 10 garantierten Platz von 128 MiB pro Ressource vorschreibt. Das hat zwar nichts zum Absturz gebracht, aber es führt dazu, dass der User auch nach der Korrektur nur mini-STLs öffnen kann.


Daher meine Empfehlung an D3D-Programmierer: Sucht das höchste unterstützte Multisample-Level (ID3D11Device::CheckMultisampleQualityLevels()) und nutzt das. Dann macht Legacy-Hardware keine Probleme und neue GPUs profitieren von besserem MSAA (mittlerweile scheint jeder 8× zu unterstützen, obwohl D3D nur 4× garantiert). Das macht mein Viewer nun auch. (Ich weiß nur noch nicht, wie ich es in meinen anderen Programmen mit Coverage-Based Texture Transparency kombiniere, ohne vier verschiedene Shader zu schreiben.)

Kosten: ca. 140 B.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6642
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: [Projekt] Mein STL-Viewer

Beitragvon Krishty » 10.11.2018, 14:46

Willkommen zu den langweiligsten Showroom-Screenshots auf ZFX ever!

Die letzten zehn Wochen habe ich das Setup überarbeitet (mein MSI-Thread spricht Bände) um von einem WiX-basierten Setup wegzukommen und meine Setups selber zu bauen. Warum ich das wollte?
  • Bloat. Die Setups sind nun von 220 KiB auf 72 KiB geschrumpft. Für einen 60 KiB kleinen Viewer sollte die Setup-Größe überhaupt nicht dreistellig sein!
  • Mehr Anpassungsmöglichkeiten. Das erkläre ich aber in der Bilderstrecke unten.
  • Weniger Abhängigkeiten zu pflegen. Statt eines 120 MiB großen WiX-Downloads inklusive .NET-Framework habe ich jetzt 3000 Zeilen eigenen Code, die quasi das gleiche machen.
  • Build-Speed. WiX hat zehn Sekunden zum Bauen des Setups gebraucht; mein eigenes Tool ist rund hundert Mal schneller. Scheiß XML, scheiß .NET, scheiß WiX.
  • Ich wollte verdammt nochmal verstehen, wie ein Setup überhaupt funktioniert.

Das Ergebnis könnt ihr unter https://papas-best.com/stlviewer_en#download herunterladen. Ich bitte euch auch drum, das zu tun! Falls ich was verbockt habe, erreicht ihr mich ja am schnellsten :) Außerdem vertraut ihr mir und verkriecht euch nicht sofort unter ’nem Stein wenn euch SmartScreen meldet, die Datei wäre unbekannt und potentiell gefährlich.

Übrigens geht das Setup nun ohne Admin-Rechte – es sei denn, ihr habt bereits eine alte Version installiert. Dann braucht es ein Mal Admin-Rechte, um die alte Version zu aktualisieren. Bei zukünftigen Updates aber nicht mehr.


Vorher-Nachher

Erstinstallation

Das erste, was der Anwender vom Programm sieht. Früher:
setup_o.png

Oh Gott wie hässlich.
  • Die freie Spalte links ist, weil man da sein Logo platzieren soll. Ich will aber kein Logo platzieren! Und WiX unterstützt nichts anderes. Darum ist der Platz halt ungenutzt.
  • Beachtet, dass das Setup als Schriftart Tahoma nutzt und die EULA in Calibri, weil das halt die Standardschriftarten in WiX und Rich Text sind. Die Standardschriftart in Windows ist aber Segoe UI (Titelleiste!), also mischen wir da drei Schriftarten. WTF.
  • Die Knöpfe sind zu klein für den Windows-Standard. (Folge der falschen Schriftart.)
  • Der Print-Knopf verbraucht 70 KiB, weil ein WiX-Plugin dahintersteckt. Und man kriegt ihn nicht ohne riesen Aufwand weg. Kann man sich nicht ausdenken.
  • Wenn man Back nicht benutzen kann, warum ist es überhaupt da? (Protip: Weil die WiX-Programmierer faul sind.)
  • Warum eine Checkbox für Accept und ein separater Knopf zum Installieren?! Warum nicht beides auf einen Knopf?! (Machen Visual Studio & Co auch seit Jahren so.)
  • Im Header des Fortschrittsfensters habe ich mir dann ein Bisschen Branding erlaubt, aber … wenn wir mal ehrlich sind, ist das doch scheiße. Weg damit.
  • Abschlussfenster: Wieder die linke Spalte verschwendet.
  • Warum eine Checkbox, um das Programm zu starten? Warum kein Knopf? Protip: Weil WiX es nicht anders kann. Fun Fact: Es kann auch keinen transparenten Hintergrund für die Checkbox; ein Hintergrundbild könnt ihr also auch vergessen.

Jetzt:
setup_n.png
  • Endlich mal konsistente Schriftarten und ordentliches Layout. (Entspricht ungefähr dem Visual Studio- und Office-Setup.)
  • Die Großschreibung in der MIT-Lizenz könnt ihr weglassen – es geht darum, dass der Haftungsausschluss nach amerikanischem Recht direkt erkennbar sein muss. Großschreibung ist Mittel der Wahl, aber bei kurzen Lizenzen geht es auch ohne. Und jetzt passt das Ding endlich mal komplett auf den Bildschirm!
  • Ich wollte eigentlich eine Klausel hinzufügen, die militärischen Einsatz verbietet – vergessen. Nächstes Mal.
  • Die Fortschrittsleiste verdeckt teilweise den Statustext. Fiel mir ohne Schnappschuss nie auf; ich behebe das für die nächste Version.
  • Launch startet das Programm. Wer das nicht will, kann ja X benutzen. Aber ich behaupte mal, dass das Verhältnis 9:1 und die Zeitersparnis für die Masse groß ist. (Visual Studio macht’s übrigens auch so.)


Updates
Wahrscheinlich noch häufiger als Erstinstallationen sind Updates. Da habe ich früher einfach das selbe Update nochmal abgespult, inklusive EULA-Zustimmung. Hat User verwirrt, weil ich ein Update ankündige und sie eine Installation kriegen. „Muss ich die alte Version vorher deinstallieren?“ – berechtigte Frage. WiX kann zwar Upgrades erkennen, aber das war mir zu aufwändig.

Nun blende ich direkt einen Update-Bildschirm ein. Samt Changelog, damit die Nutzer nicht denken, ich würde neue Versionen nach Lust und Laune verteilen:
update_n.png



Deinstallation

Die größte Pest war bisher das Deinstallieren. WiX führt einen durch fünf(!) Fenster durch. LIEBER GOTT, LASS ES ENDLICH VORÜBER SEIN. Hat überhaupt jemals irgendjemand alle diese Textwände gelesen?!
uninstall_o.png


Jetzt geht das ruck, zuck:
uninstall_n.png
uninstall_n.png (6.6 KiB) 381-mal betrachtet



So. Leider keine aufregenden Sachen heute, sondern nur das. Die kleinen Fehler, die mir beim Anfertigen der Screenshots aufgefallen sind, behebe ich für die nächste Version. Ich bin einfach nur froh, dass ein zehnwöchiger Alptraum zuendegeht und warte auf Feedback …


Übrigens ist nicht alles WiX’s Schuld. Die haben auch eine neue, modernere UI in ihrem Burn-Bootstrapper. Aber damit kriegt ihr Bloat im Megabyte-Bereich.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6642
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: [Projekt] Mein STL-Viewer

Beitragvon MasterQ32 » 10.11.2018, 16:31

Ich finds gut, dass du dir auch über sowas Gedanken machst. Hut ab und Daumen hoch!
Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes
Benutzeravatar
MasterQ32
Felix Queißner
Establishment
 
Beiträge: 1194
Registriert: 07.10.2012, 14:56

Re: [Projekt] Mein STL-Viewer

Beitragvon Psycho » 11.11.2018, 01:56

Ich mag ja Deine Detailverliebtheit und den Verzicht auf Bloat.

Aber ein eigener Installer..uiuiui. Das Ding einmal zu schreiben, ok. Das es auf allen möglichen Systemen so funktioniert wie es soll, schwer zu testen. Und dann das Maintainen..aber wirst schon wissen, was Du machst.

In welchen Ordner installiert sich der Viewer denn, wenn es ohne Admin-Rechte geht?
Psycho
Establishment
 
Beiträge: 153
Registriert: 16.09.2002, 14:23

Re: [Projekt] Mein STL-Viewer

Beitragvon Krishty » 11.11.2018, 09:51

Meine MSI ist ja „nur“ die Schnittstelle zum Windows Installer-Dienst, der dann dafür sorgt, dass es auf allen möglichen Systemen so funktioniert wie es soll. Orca bietet auch eine umfassende Validierung der Pakete.

Eine Auflistung, was mit und ohne Admin-Rechte wo landet, hast du hier: https://docs.microsoft.com/en-us/window ... on-context

Du meist wohl unter Folder Redirection das ProgramFilesFolder; das liegt bei mir unter A:\Users\Krishty\AppData\Local\Programs. Darunter dann noch ein Unterordner Papa’s Best\STL Viewer. Hier übrigens schon ein Problem: Weil da kein x86 oder x64 im Namen ist, können die Installationen unterschiedlicher Plattformen in Konflikt kommen … wird aber noch behoben.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6642
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: [Projekt] Mein STL-Viewer

Beitragvon Psycho » 11.11.2018, 17:49

Oh, ich verstehe. In dem Fall nehme ich jegliche Kritik zurück. ;) Gut gemacht.
Psycho
Establishment
 
Beiträge: 153
Registriert: 16.09.2002, 14:23

Re: [Projekt] Mein STL-Viewer

Beitragvon marcgfx » 11.11.2018, 20:58

Ich finds cool Krishty. Du zeigst wie viel Potential verschwendet wird. Wie viel besser Software sein könnte. Wir bauen immer schnellere Geräte aber verschwenden diese Leistungssteigerung durch ineffizients.
Benutzeravatar
marcgfx
Establishment
 
Beiträge: 1156
Registriert: 18.10.2010, 23:26

Re: [Projekt] Mein STL-Viewer

Beitragvon Tiles » 11.11.2018, 21:08

Schwieriges Kapitel. Denn diese Effizienz will ja auch erst mal erarbeitet sein. Und das kostet eben Manpower. Und wieso sollte man Manpower in was investieren was schon geht? Das rechnet sich für die allermeisten Entwickler nicht.
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de
Benutzeravatar
Tiles
Establishment
 
Beiträge: 1227
Registriert: 11.01.2003, 14:21

Re: [Projekt] Mein STL-Viewer

Beitragvon MasterQ32 » 11.11.2018, 23:47

Tiles hat geschrieben:Schwieriges Kapitel. [...] Und wieso sollte man Manpower in was investieren was schon geht? Das rechnet sich für die allermeisten Entwickler nicht.

Ja, ich denke, das hier das Problem in "Gute Performance ist kein Qualitätsmerkmal" liegt. Mich regt das in den letzten Jahren auch auf, dass immer mehr Leute einfach "Node+Chromium" nehmen und sagen: "das ist jetzt mein framework, weil das kann ich als webprogrammierer und darum nehm ich das jetzt". Aber: ich schweife ab, das passt wie immer mehr in den jammerthread (können ja da gerne weiterdiskutieren)


Zu Krishty: Thumbs up für die ganze Sache mit MSI, der Installer läuft auch mit Wine hervorragend und schön schnell :)
Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes
Benutzeravatar
MasterQ32
Felix Queißner
Establishment
 
Beiträge: 1194
Registriert: 07.10.2012, 14:56

Re: [Projekt] Mein STL-Viewer

Beitragvon Krishty » 12.11.2018, 07:08

MasterQ32 hat geschrieben:Zu Krishty: Thumbs up für die ganze Sache mit MSI, der Installer läuft auch mit Wine hervorragend und schön schnell :)
Boah vielen Dank, das beruhigt mich mega!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6642
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: [Projekt] Mein STL-Viewer

Beitragvon Chromanoid » 12.11.2018, 09:14

Voll cool, ich installiere nachher mal :) schon mal daran gedacht ein package bei http://chocolatey.org bereitzustellen?
Benutzeravatar
Chromanoid
Christian Kulenkampff
Moderator
 
Beiträge: 3751
Registriert: 16.10.2002, 19:39
Wohnort: Lüneburg
Alter Benutzername: atr_23

Re: [Projekt] Mein STL-Viewer

Beitragvon scheichs » 12.11.2018, 10:52

Ja das Setup ist wirklich blitzschnell und gab keine Probleme (Win 10 x64 - October Build). Hab jetzt auch Deinen MSI-Thread gesehen. Klasse gemacht!
scheichs
Establishment
 
Beiträge: 314
Registriert: 28.07.2010, 20:18

Re: [Projekt] Mein STL-Viewer

Beitragvon Krishty » 12.11.2018, 18:36

Danke, danke!

Aber das Ausschlaggebende für das Setup war nicht die Leistung, sondern das Vertrauen. Ich gebe WiX ein 60 KiB großes Programm und bekomme ein 224 KiB großes Setup zurück. Warum das so groß ist und was das macht? Keine Ahnung. Da liegt auch eine DLL drin, die größer ist, als mein Viewer. Was die tut? Weiß niemand. Versucht, doch mal das herauszufinden! (WiX ist Open Source, kann doch nicht schwer sein – am Arsch.)

Und nun soll ich dieses viel zu große Paket, über das ich nichts weiß, den Usern zur Ausführung mit Admin-Rechten geben.

Niemals. Da schreibe ich doch lieber alles selber. Beim neuen Paket kann ich zu ~80 % den Zweck des Inhalts nachvollziehen, und am Rest arbeite ich noch.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6642
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Vorherige

Zurück zu Vorstellungsbereich

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Linkdex [Bot] und 9 Gäste