[Projekt] Devader

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.
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] Devader

Beitrag von xq »

Errm, versteh ich nicht? Kommen doch immer neue Splateffekte oben drauf, die dann wieder mit voller Opazität gerendert werden müssen. Wie willste das mit 1 Rendertexture lösen?
Mein Ansatz wäre folgender:

Code: Alles auswählen

while true:
    rendertarget := effektbuffer
    'reduziere alpha um 10%' (subtraktive blending mit (0,0,0,0.1))
    'zeichne neue effekte'
    rendertarget := bildschirm
    'zeichne szene'
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
scheichs
Establishment
Beiträge: 845
Registriert: 28.07.2010, 20:18

Re: [Projekt] Devader

Beitrag von scheichs »

Ach verdammt, klar ... ihr habt natürlich Recht...sollte mir mal wieder die ganzen Blending-Operationen anschauen.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Ich habe mich unglaublich schwer getan mit den wirklich guten Anweisungen. Es ging ewig bis ich nur mal sicher war, dass ich überhaupt was in den Framebuffer rendern kann. Noch ein herzliches Dankeschön für die Diskussion hier :)
Bild
Es stimmt noch vieles nicht, aber man sieht jetzt endlich was. Ich rendere in den Framebuffer, dieser wird dann in mein Canvas gerendert.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Bild
nach drei Tagen Frust mit WebGL, langsam wirds was. Ich muss es jetzt mal auf schwächeren Geräten testen, sehen obs überhaupt was bringt... grundsätzlich läuft es. Was noch fehlt ist ein fade-out auf dem Framebuffer und die bisherige Speicherfunktion ist für nix... bzw. jetzt muss ich praktisch den Framebuffer als Bild speichern um die selbe Optik nach einem Continue herzustellen. Bislang wurden nur die Texturinformationen gespeichert. Sollte als JPEG schon irgendwie machbar sein, nur kann ich das nicht mehr ohne externe Strukturen (Server oder Modul in NW.js vermutlich)
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Es läuft und wie. Die Anpassung erzielt fast das gleiche Resultat wie zuvor und belastet die GPU/CPU weniger. Jetzt läuft Devader auf High auf meinem Laptop (die Einstellungen kann ich jetzt wohl kicken). Einige Veränderungen gibt es durch die angepasste Technologie. Ich habe keine Kontrolle mehr darüber wie lange die einzelnen Splatter bleiben, alles wird gleich behandelt. So verschwinden jetzt auch die Risse die durch eine Nuke erzeugt werden für immer. Eventuell mache ich dafür später auch noch einen Layer, aber wirklich relevant ist das nicht.
Bild

Es gibt einen Punkt der noch nicht korrigiert wurde, aber eventuell ebenfalls mit einem Shader besser gelöst wäre als bisher. Ich erzeuge ab Level 24 einen kleinen Sturm, dieser wird mit ganz vielen bewegten Texturen die sich auch noch etwas rotieren gelöst. Das wird zum selben Problem führen wie beim Splatter. Da ich ungefähr weiss wie die Strukuren in der Mitte aussehen werden, könnte ich mir vorstellen mit einem Vektorfeld zu arbeiten. Die aktuelle Idee: In jedem Zeitschritt erzeuge/vernichte ich per Zufall in jedem Pixel etwas "Sand". Zusätzlich mache ich anhand des Vektorfelds einen Texture Lookup und wenn in dem gefunden Lookup Sand bereits existiert verstärke ich mein aktuelles Sandpixel. Keine Ahnung ob das geht, aber ich finde die Idee noch gut :D. Was denkt ihr? Bessere Ideen, oder Ergänzungen?

Aktuell muss ich mich auf nächste Woche vorbereiten. Ich gehe am Donnerstag an die Geneva Gaming Convention und stelle aus.
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] Devader

Beitrag von xq »

Schön zu hören, dass es performanter läuft! Du kannst sicherlich mit nem post-processing-effekt irgendwelche Verschiebungen und verwirbelungen auf dem Boden machen, da seh ich überhaupt kein Problem drin. Musst halt mal rumexperimentieren
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

erste sturm version. mehr oder weniger noise erzeugt und mit einem texture lookup aus einem vorherigen bereich der textur kopiert.
Bild
sturm zentrum festgelegt, sowie eine art anziehungskraft und drehrichtung des sturms. mathematisch zweifelhaft, aber scheint zu funktionieren. habe jetzt viele parameter zum spielen.
Bild
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Bild
Habe mal wieder viel zu lange an was rumgebastelt, was verdammt einfach sein sollte. Nach jedem Level speichere ich die Splattereffekte als jpeg ab, so dass ich sie bei einem Continue zurücksetzen kann. Das Speichern war relativ schnell umgesetzt, aber ich konnte das verfluchte Bild einfach nicht in den Framebuffer laden. X Stunden später stellte ich fest, dass ich das Program nie aktiviert hatte (useProgram)... argh.

Vor einer Woche war ich noch in Genf an der Messe und habe gar den Indie Prize gewonnen. Bedeutet ich kann nach Kiew ans Casual Connect um Kontakte zu knüpfen. Bin gespannt :D
Oprah Noodlemantra
Beiträge: 19
Registriert: 30.06.2015, 19:03

Re: [Projekt] Devader

Beitrag von Oprah Noodlemantra »

Der Schatten auf der Explosion sieht doof aus.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Ja da hast du recht. Leider habe ich keine gute/einfache Lösung dafür. In Bewegung sieht man es eigentlich eh nicht...
Alles was gezeichnet wird, wird auf die gleiche Art und Weise sortiert und dann gezeichnet. So können Explosionen auch hinter Objekten sein, oder hinter einem Schatten. Ich kann den Schatten schon zuunterst zeichnen, dann hat es auch keinen sichtbaren Schatten auf der Matrix, was mehr auffällt.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Die Arbeit geht mir nicht aus. Heute noch Steuerung via Steuerkreuz eingebaut und endlich ist die neue Musik von Trommelfell drin. Was ich den ganzen Tag eigentlich gemacht habe ist mir fast schon nicht mehr klar. Ich schleife an vielen Ecken, spiele viel. Alles was mir nicht passt wird zum 100sten Mal verändert.

Beim Storm-Shader ist mir ein kleiner Fehler aufgefallen, den ich korrigiert habe. Dabei kam mir was in den Sinn. Aktuell wird per Zufall ein Sandkorn erstellt, was wäre aber wenn ich durch Explosionen Staub erzeugen könnte? Ich habs inzwischen getestet, allerding wird noch ziemlich viel zu Staub was nicht sollte. Es sieht ganz interessant aus, allerdings sieht man hier wieder stark das Ebenenproblem... eventuell kann ich den Effekt aber irgendwie gezielt nutzen.
Bild
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Mit ein paar Anpassungen und ohne ins Bett zu gehen, siehts schon gar nicht mehr so schlecht aus.
Bild
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] Devader

Beitrag von Krishty »

Ich mochte die Dünen nie, aber der Shader ändert das – sieht verdammt geil aus!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Ach die Dünen magst du nicht? Naja bis jetzt ist es immer noch das Beste was ich hinkriege, aber ich bin für Ideen immer zu haben. Ob ichs dann umsetzen kann ist wieder was anderes. Freut mich jedenfalls, dass dir der Sturm-Effekt gefällt :D
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Bild
Ich bin am testen wie es ausschauen würde mit einem vordefiniertem Untergrund. Weiss nicht ob es mir gefällt, oder ob sich das beisst... Der Sand kommt auch wieder drüber, aber später im Spiel wird der ganze Untergrund sichtbar. Ich könnte mir auch vorstellen den Untergrund mit der Struktur stärker zu verbinden, also vielleicht noch irgendwelchen technischen Konstrukte.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

hab den Post mal auf eine neue Seite geholt.

Bild
Ich bin am testen wie es ausschauen würde mit einem vordefiniertem Untergrund. Weiss nicht ob es mir gefällt, oder ob sich das beisst... Der Sand kommt auch wieder drüber, aber später im Spiel wird der ganze Untergrund sichtbar. Ich könnte mir auch vorstellen den Untergrund mit der Struktur stärker zu verbinden, also vielleicht noch irgendwelchen technischen Konstrukte.

Bild
mir war es jetzt doch noch zu stark gesättigt... ich muss mal was essen :)
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Bild
Es hat mich ganze zwei Tage gekostet um ein elendes Hintergrundbild einzubauen... schrecklich. Probleme gabs beim import in den Framebuffer und ich habs einfach nicht geschnallt woran es lag. Bei einem Fall hats geklappt, beim zweiten nicht und ich bin fast wahnsinnig geworden. Schlussendlich war es eine falsche Zoom-Einstellung die das Bild ganz klein unten rechts (nicht im sichtbereich) platziert hat. Dann gabs aber noch x andere Fehler die zusammen mit dem Zoom Problem den Spass vergrössert haben. Jetzt gibt es einen Hintergrundlayer auf den gewisse Risse entstehen. Dieser Layer ist unter dem Sand und kommt beim hier gezeigten Turmboss dann zum Vorschein.
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] Devader

Beitrag von xq »

Sieht schon irgendwie verdammt geil und farbenfroh aus, muss unbedingt mal wieder nen aktuellen Build spielen!
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Danke! Ich sollte mal wieder nen aktuellen Build hochladen :D :roll:
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Bild
Bild
Bild
Ein paar aktuelle Screens. Ich habe wieder mal 1000 kleine Sachen gemacht, geschraubt, gedreht, poliert. Das waren die wichtigen Sachen:
- Ich habe alle glow-Effekte von den Schüssen entfernt. Bisher habe ich oft zwei Bilder pro Schuss gezeichnet. Ein normales Schussbild und ein grösseres, leicht transparentes, additives Bild. Ich habe die zwei Bilder jetzt mit einem Ersetzt und etwas Shader code. Via Shader werden hellere Bereiche additiv, andere normal gerendert.
- Gegnerische Schüsse sind jetzt vorwiegend dunkel mit heller Silhouette. So soll es einfacher sein zu erkennen was gut und böse ist. Es gibt noch eine Aussnahme bei den Kurzdistanzattacken von Spinnen.
- Ich habe entdeckt, dass mein Shader kein absolutes Schwarz zuliess. Beim Spielen viel mir das nicht auf, aber ich war immer enttäuscht über die Screenshots und hab gar mein Bildbearbeitungsprogramm beschuldigen wollen... Ich war selber schuld.
- Ich glaube das Problem mit dem Sound in den Griff bekommen zu haben. Ich benutze jetzt einen GainNode (volume) nach einem DynamicCompressorNode (verhindert, dass die Amplitude zu krass ausschlägt). Muss aber noch beobachtet und abgestimmt werden.

Ich schlage mich momentan mit dem Linux Build rum. Dazu habe ich Ubunto auf Virtualbox installiert. Es läuft schrecklich langsam und irgendwie krieg ich es nicht gebacken Dateien auszutauschen.

Ende November will ich eine neue Demo veröffentlichen. Releasetermin ist Ende Januar.
Für die Demo werde ich vermutlich wie beim ersten Mal die 3 Anfangslevel bis zum 3ten Boss veröffentlichen. Jetzt aber mit allen Schwierigkeitsstufen. Highscore wäre auch noch cool. Eventuell muss ich schauen ob ich dafür noch Facebook oder Google Logins ermöglichen soll. Könnte beim Vermarkten helfen...
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] Devader

Beitrag von xq »

Hey, gut zu hören, dass es vorangeht!
Es läuft schrecklich langsam und irgendwie krieg ich es nicht gebacken Dateien auszutauschen.
Versuchs mit SSH-Dämon auf der VM und SCP auf Windows (WinSCP o.ä.), das funktioniert immer prima bei mir
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Danke! Ich hab dennoch eine bessere Lösung gefunden. Es lag noch ein alter Laptop rum, flugs Ubuntu installiert. Bis auf ein bisschen rumspacken (wollte nicht mehr starten nach einem ersten Update) hats ganz gut geklappt. Habe Devader auch schon zum laufen gebracht, es lief mit ganzen 20fps... die GPU war massiv überfordert. Naja vielleicht kann ich das Gerät ja nutzen um die Performance nochmal zu verbessern.

Ich mühe mich mit komischen Sachen ab unter Ubuntu. Ich habe .desktop files angelegt um NWjs starten zu können, bekomme aber fehlermeldungen und danach sind die .desktop Dateien versteckt. Echt mühsam. Ich versuch mal einen Build auf Steam hochzuladen, man muss es halt leider vom Terminal aus starten (ich noob zumindest). Obwohl... mal sehen, bei Steam muss man das Start-Programm angeben. Wird spannend.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Manchmal könnte ich in die Wand hauen wegen meiner gewählten Tech. Ich hab schon so vieles verbessert und dennoch läuft es nicht wirklich gut auf meinen Laptops. Der Linux-Laptop ist eigentlich gar nicht so schlecht, mein MacBook ist 4 Jährig. Beide etwa gleich gut/schlect. 20fps reichen lustigerweise aus zum spielen, die Steuerung reagiert leider nicht so gut wie sie sollte. Ich habe 4 Layer im Spiel: Hintergrund, Splatter, Objekte, Sturm. Bis auf die Objekte kann ich alle einzeln Ein/Ausschalten. Wenn alles bis auf die Objekte ausgeschaltet sind, habe ich um die 40-50fps. Ich muss noch ausgiebiger testen. Es spielt sich besser, sieht einfach nicht so schön aus. Ist sowas überhaupt vertretbar? ...
scheichs
Establishment
Beiträge: 845
Registriert: 28.07.2010, 20:18

Re: [Projekt] Devader

Beitrag von scheichs »

Alter des Laptops sagt wenig aus. Es kommt ja auf die Specs an. Aber generell gesagt: Ich habe damals (vor 3 jahren?) Cyberlympics unter Firefox ausprobiert und war mässig beeindruckt. Später hatte ich nochmal unter Chrome getestet und es machte wirklich Spass. Warum? Wegen der Framerate! Dasselbe gilt auch für Devader. Unter 60FPS (EDIT: Vsynced!) würde ich nicht gehen wollen. Dazu muss es auf voller Qualität laufen. Diesen Anspruch musst du haben! Das muss an allen Ecken und Enden knallen!
Ich vermute auch, dass Du Dich mit deiner Dev-Env da selber limitierst. Ich würde Dir empfehlen auf Unity (bevorzugt wegen 2D) oder Unreal zu portieren. Das dauert vermutlich genausolang wie weitere Versuche zu optimieren. Dann stehen Dir auch von den Releasewegen viel mehr Türen offen (Konsolen!!!). Du hast jetzt soviel Arbeit da rein investiert (speziell auch von den Gegnern). Schau dass Du Dich da auch belohnst dafür.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Danke für deinen Input scheichs, womöglich hast du recht. Nur ich glaube das Portieren wäre nicht so eine einfache Geschichte, wissen tue ich das nicht. Vermutlich fange ich besser bei null an mit einem neuen Projekt. Meine Tech ist schon arg limitierend, aber es ist halt was ich habe. Ziel ist es in zwei Monaten das Ding rauszuhauen, sonst wird es zu nem Endlosprojekt. Aufregen werde ich mich genug in der Zeit, hoffentlich gibts auch ein paar Jubelschreie :lol:

Ich rede mir manchmal gut zu und sage: Es gibt erfolgreiche Projekte die eine fixe Framerate von 30 haben (nuclear throne).

Interessant an meinem jetztigen Problem ist allerdings, dass ich mit der GPU kämpfe. Der Einfachheit halber hat es noch ein paar Branches im Shader, eventuell könnten die ein Teil vom Problem sein.
Ich schäme mich etwas für den code :P aber kann es ja mal posten. Warscheinlich lacht ihr euch einen ab :D

Code: Alles auswählen

//bg_1

precision mediump float;
uniform vec2 u_resolution;
uniform float u_time;

uniform float u_sandtime;
uniform float u_sandscale;
uniform float u_sandopacity;
uniform float u_sandoffset;
uniform vec4 u_sandpos;
uniform vec4 u_sandbump;
uniform vec4 u_sandcol;

uniform vec4 u_enva;
uniform vec4 u_envm;

varying vec2 v_tex;
varying vec2 v_coord;
varying vec2 v_size;
varying float v_mode;
varying vec2 v_pos;

uniform vec2 u_imagesize;
uniform sampler2D u_image;
uniform sampler2D u_fb;

vec3 rgb2hsv(vec3 c) {
    vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
    vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
    vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
    float d = q.x - min(q.w, q.y);
    float e = 1.0e-10;
    return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
vec3 hsv2rgb(vec3 c) {
    vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
    vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
    return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}

void main(void) {
    //mode bestimmt wie ein poly gezeichnet wird
    float stp = step(0.0,v_mode);
    float mode = mix(-(v_mode+1.0), v_mode, stp);
    vec2 pos = v_coord + v_tex * v_size;
    
    //hässlicher branch
    if(mode>53000.0) {
        //sand code, wird ausgeführt wenn der framebuffer aufs canvas gezeichnet wird 
        float dune = 0.0;
        float base = 1.0;
        if (u_sandopacity != 0.0) {

            float opacity = abs(u_sandopacity);
            float time = u_sandtime;
            float offset = u_sandoffset;
            float choice = sign(u_sandopacity) * 0.5 + 0.5;
            vec4 tpos = mix(u_sandbump, u_sandpos, choice);

            dune = (0.4 + 0.4*texture2D(u_image, (tpos.ba + mod((pos-time*0.0037)*tpos.rg*2.288*u_sandscale,tpos.rg))/u_imagesize).r)
            * (offset + opacity*texture2D(u_image, (tpos.ba + mod((pos-time*0.0227)*tpos.rg*4.8*u_sandscale,tpos.rg))/u_imagesize).r
            //* (texture2D(u_image, (tpos.ba + mod((pos+time*0.00061)*tpos.rg*0.2*u_sandscale,tpos.rg))/u_imagesize).r*2.0)-0.25)
            * (texture2D(u_image, (tpos.ba + mod((pos+time*0.01187)*tpos.rg*1.31*u_sandscale,tpos.rg))/u_imagesize).r*1.5)-0.25)
            +  texture2D(u_image, (tpos.ba + mod((pos-time*0.12327)*tpos.rg*11.8*u_sandscale,tpos.rg))/u_imagesize).r*0.06;

            //dune *= v_tex.x;
            base = mix(max(0.0, 1.0-dune), 1.0-dune, choice);
        }

        vec4 c = texture2D(u_fb, pos);
        c = c*base + dune*u_sandcol;
        if(u_envm.r>0.0) c.rgb = c.rgb * u_envm.rgb + u_enva.rgb;

        gl_FragColor = c;
    }
    else
    {
        //code für splatter effekte die auf den hintergrund gezeichnet werden (unter sand)
        vec4 c = texture2D(u_image, pos);

        float dec = floor(mode);
        mode = fract(mode);
        float smode = fract(mode*10.0);
        float sat = mix( u_envm.a, u_enva.a, stp);
        float nmode = 1.0-smode;

        //0.9<mode additive blending
        c.a *= (mode>0.9) ? nmode : 1.0;
        //0.8<mode<=0.9 saturation
        sat *= (mode>0.8 && mode<=0.9) ? smode : 1.0;
        //0.6<mode<=0.7 make red
        c.rgb = (mode>0.6 && mode<=0.7) ? c.rgb*nmode + vec3(min(c.r+c.g+c.b,1.0)*smode* c.a, 0.0, 0.0) : c.rgb;
        //0.4<mode<=0.5 brightness
        c.rgb *= (mode>0.4 && mode<=0.5) ? (1.0+c.a*9.0)*max(smode-0.1,0.0) : 1.0;

        float cen = mod(dec,1000.0);
        float d = (dec/1000.0);
        float alpha = floor(d)/50.0;
        if(alpha>0.0){
            c.rgba *= alpha;
        }

        float condition = float(cen>=500.0);
        float l = min(min(c.r,c.g),c.b);
        vec3 lvec = vec3(l,l,l);
        vec3 lcol = c.rgb-lvec;

        float m = mix(1.0,c.r-l,condition);
        vec3 ref = mix(lcol,vec3(1.0,0.0,0.0),condition);

        vec3 hsv = rgb2hsv(ref);
        float hue = fract(cen/100.0);
        hsv.x += hue;
        //hsv.z *= huez; //könnte auch zum abdunkeln verwendet werden
        hsv.y*=sat;

        //abdunkeln, 5 stufen 500 weiss - 900 schwarz
        float dark = mod(cen,500.0);
        float gray = 1.25-(dark/400.00);
        vec3 tmp = mix(hsv2rgb(hsv),vec3(gray,gray,gray),(1.0-mod(hue*33.0,1.0))*condition);

        tmp *= mix(1.0,gray,float(cen>=100.0));
        c.rgb = vec3(l,l,l) + tmp*m;

        gl_FragColor = c;
    }
}
scheichs
Establishment
Beiträge: 845
Registriert: 28.07.2010, 20:18

Re: [Projekt] Devader

Beitrag von scheichs »

Ich bin zwar jetzt kein Shadergott, aber der da birgt allein vom Branchen wohl schon einiges an Optimierungspotenzial. Würde ich auf jeden Fall mal in seperate Shader aufdrösseln.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Also zwei Shader sollten definitiv daraus entstehen, ob ich sonst noch was rausholen kann weiss ich nicht. Die ternary Operatoren sollten eigentlich schnell sein. Da ich mit alpha blending arbeite, ist es so weit ich verstehe nicht möglich in mehreren passes zu rendern um den depth buffer zu nutzen. Mein Verständnis davon ist sehr beschränkt.
scheichs
Establishment
Beiträge: 845
Registriert: 28.07.2010, 20:18

Re: [Projekt] Devader

Beitrag von scheichs »

marcgfx hat geschrieben:Die ternary Operatoren sollten eigentlich schnell sein.
EDIT: Ja Du hast recht.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Danke scheichs. Ich weiss zwar nicht was du ursprünglich geschrieben hast, aber danke dass du dir dafür die Zeit genommen hast. Mir wär lieber ich hätte nicht "recht" und könnte was optimieren. Wenn jemand noch was doofes sieht :D, ich wäre echt froh drum.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitrag von marcgfx »

Bild
Ich weiss nicht ob sich jemand dran erinnert, in der ZFX-Action Version war das Gefährt eine Art Panzer. Den gibt es immer noch, ich habs heute per Zufall gefunden und wieder zum laufen gebracht. Eigentlich sollte ich an der Demo feilen... Ich denke die Panzerversion würde sich gut als Belohnung für das durchspielen auf Schwer oder sowas eignen. Eventuell sollte ich mir noch ein paar andere alternative Vehicle einfallen lassen. Eilt aber nicht ;)
Antworten