Ende mit Blende ?!
Übersicht

AvaGastBetreff: Ende mit Blende ?! |
![]() Antworten mit Zitat |
|
---|---|---|
Hallo!
Ich hab grad eine fürchterliche Entdeckung gemacht und würd gern wissen, woran DAS liegt !! ![]() Also folgendes: In meinem Projekt überlagern sich einige Objekte (und Texturen) mit unterschiedlichen Alphawerten und Blendmodi. Und scheinbar bin ich da gerade an eine mir bisher unbewusste Grenze gestossen ... ![]() ![]() Wenn ich die Blendvorgänge darunter reduziere (zb. 1-2 Texturen entferne), dann werden die darüberliegenden Objekte wieder ganz wie geplant angezeigt. Woran liegt das? Gibt es da einschränkungen innerhalb von BB3D? Oder liegt es an meiner (eher schlechten) Grafikkarte? Und kann ich diesen Fehelr irgendwie umgehen?! (ohne auf Texturen und Alphaentitys zu verzichten! - davon ist nämlich jedes einzelne super wichtig !! ![]() + Ava + |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn du möchtest kannst du mir ne kompilierte Version mailen und ich teste obs an der Hardware liegt.
Sofern Mark in den letzten Patches nicht das interne verhalten total gedreht hat, könnts jedoch an Alpha + Multitexture liegen, dort gabs ja das eine oder andere Problem. Wenn du übrigens ne schwache Grafikkarte hast, könnte speziell der Textureblendmode 5 Probleme machen, hatte mit dem auf meiner Geforce 4MX auch die grössten Probleme, wenn er zusammen mit "zuvielen" anderen Blends kommt, dann drehen die blends total durch. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Slope |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du kannst vielleicht bei allen Objekte die hinter der Kamera liegen und zu weit weg sind, den Alphawert wieder auf 1 setzen. Dann werden die anderen die man sieht evtl. richtig dargestellt. Müsste Speicherplatz sparen.
nur so' ne Idee. ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Nee, also der Fehler tritt nur auf, wenn sich die Objekte überlagern ! (also primär wenn etwas über meiner Karte / meinem Terrain liegt). Ich habe das als erstes bei meiner transparenten "Minimap" beobachtet, konnte dort aber das Problem lösen, indem ich den Blendmode von 1 auf 3 umgestellt habe (warum auch immer es dann funktioniert hat ist mir ein Rätsel). Dann habe ich angefangen, einen transparenten Mapcursor zu erstellen, und auch bei diesem funktionierte die Transparenz nicht mehr. Wenn ich im Terrain eine der drei Texturen deaktiviere, klappt es (aber das sit ja nicht Sinn der Sache!). Mittlerweile habe ich auch dort durch einen Trick einen Teil des Problems gelöst: Ich habe die Entity-Order meines Cursors auf -1 umgestellt, nun wird er wenigstens in Camera 1 vernünftig angezeigt ! (in Camera 2 fehlt noch immer die Transparenz ![]() Also ich find das total schrecklich, ich kann soo nicht arbeiten !! Weis denn niemand einen Rat ?! kennt jemand anderes ähnliche Probleme ? (ist das n BB Bug ?!) @Dreamora Dein Angebot ist sehr nett. Ich muss mal gucken ob es mir möglich, dass Problem irgendwie zu isolieren und Dir eine Datei davon zu geben. (weil sonst ist das alles n bissel viel, weil schon viele Grafikdateien und 3D-Modelle eingebunden sind). ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab sonst ein grosses Mailfach.
Haben die Texturen auf dem Terrain spezielle Textureblendmodes? |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Was meinst du mit "speziell" ?
Also bevor Du es vorhin gepostet hasttest, wusste ich noch gar nicht, dass es nen 4ten und 5ten Mode gibt !! *g* Texturlayer 2+3 haben jeweils Blendmode 2. Der unterste ist natürlich auf standard. *hm hm hm* |
||
![]() |
eizdealer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könntest du einen Screen posten?
So was ich im überfliegen mitbekommen habe, könnte ich mir vorstellen, woran es liegt: Alphaobjekte (EntityAlpha oder EntityFX 32) haben untereinander kein ZOrder sorting. Ein bisschen was zur Theorie: Bei "normalen" Objekten wird ja schon seit Jahren der ZBuffer benutzt. Dieser prüft, ob der gerenderte Pixel auch wirklich gerendert werden muss und nicht vorher gerenderte Objekte, die im Vordergrund sind, auf diesen Pixel gerendert wurden. Bei Alphaobjekten sieht das ganz anders aus, weil ja immer alle Objekte auf den Pixel gerendert werden müssen, um ein korrektes Ergebnis zu erreichen (schließlich siehst du durch den Pixel "durch" auf die anderen Objekte dahinter). Wenn jetzt aber das Objekt im Vordergrund zuerst gerendert wird und anschließend das Objekt im Hintergrund, ist es natürlich klar, dass Grafikfehler auftreten. Wenn das Objekt im Vordergrund allerdings ebenfalls in den ZBuffer schreiben würde, hätte es folglich keine korrekte Durchsichtbarkeit. -> Alphaobjekte lesen nur ZBuffer und beschreiben ihn nicht Also gibt es für dieses Problem keine Hardwarelösung. Das hat übrigens nichts mit Blitz zu tun, das ist in C++ und in allen anderen Sprachen genauso. Eine (aufwändige und langsame) Möglichkeit, das zu verhindern, gibt es aber trotzdem: Vor jedem Rendern müsstest du alle Objekte untereinander auf Entfernung zur Kamera prüfen, sortieren und anschließend in der Reihenfolge der Entfernung alle Triangles wieder neu erstellen. Das ist übrigens auch der Grund, warum Partikel Engines relativ langsam sind. Meiner Meinung nach hätte es schon längst eine integrierte Hardwarelösung in den neueren GraKas geben müssen. Ach und wenn's das nicht war, ist es doch gut, dass das mal im deutschen Forum geschrieben wurde. Ist eine ziemlich blöde Sache... |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Ja, es ist auf jeden Fall eine verdammt blöde Sache! Und ich danke Dir für Deinen ausführlichen Beitrag! ![]() Der Fehler mit der Transparenz scheint aber wirklich von meiner Hardware abhängig zu sein, denn zumindest das Problem mit dem Alphablending trat bei Dreamora (der so gut war, mal einen Blick in das Programm zu werfen) nicht auf! Ich denke es liegt auch daran, dass meine Grafikkarte nur 2 TexUnits unterstützt ?! Allerdings habe ich mittlerweile eine ganze Menge kleinerer Fehler in der Darstellung, die dann auch bei Dreamora auftraten. Bespielsweise werden einige Objekte nicht oder nur teilweise gezeichnet, obwohl diese durch keine anderen Objekte verdeckt sind (und auch nicht ausserhalb der Camera/Reichweite liegen!). Die Teilausschnitte, die gezeichnet werden, verändern sich mit der CameraPosition. Wenn ich das (Mesh)Terrain verstecke, auf dem sich die Objekte befinden, dann tritt dieser Fehler nicht mehr auf. Keine Ahnung, vielleicht habe ich auch zu wenig Speicher, dass Blitz3D nicht mehr vernünftig klar kommt?! ![]() Jedenfalls habe ich mein Projekt wieder eingestampft. Ich konnte nach drei Tagen intensives rumprobieren die Probleme nicht beheben. Ich werde nun noch einmal alles von grundauf neu schreiben und wenn die Fehler dann wieder auftreten, hat sich Blitz3D für mich erledigt! ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Ich habs nun zum Austesten noch einmal ganz simpel mit Primitives gemacht. Das Ergebnis ist das selbe: die Objete verschwinden teilweise oder sogar gänzlich. Ich habe aber mittlerweile heraus gefunden, dass es wirklich nur an dem Alphawert bzw. dem Blendmode liegt.
Also muss ich mich wohl geschlagen geben und damit abfinden? oder eben auf Alpha/Blending verzichten ... ![]() (das wird dann natürlich ein sehr spektukuläres Spiel: ich freue mich schon auf schwarz-eingerahmte Explosionseffekte! ![]() Immerhin scheint es bei Maskierungen keine Probleme zu geben. Ja, immerhin ... ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Problem vorerst gelöst! (hätte nicht mehr daran geglaubt!)
![]() (aber warum ist sowas nirgendwo dokumentiert? ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group