Posts by Juggernaut

    Am Tag deiner Antwort a EMail geschickt, bisher noch keine Antwort.


    /Edit: Wenn man vom Teufel spricht ;) :


    Quote

    Für Tile-Based Deferred Shading könnt ihr insgesammt 2 Punkte rechnen. Überlegt euch aber bitte wie ihr am Ende zeigen könnt, dass auch alles funktioniert.
    Deferred Illumination bringt so wie Deferred Shading 1 Punkt, da hier der Coding-Aufwand fast gleich ist.

    Hallo liebe Tutoren,


    auf einem deferred shading (DS) tutorial (vor der Überschrift "Deferred rendering vs forward rendering") steht folgendes zu light volumes im Bezug auf DS:


    Quote

    Rendering light volumes does take a heavy toll on performance and while it is generally faster than normal deferred shading it's not the best optimization. Two other popular (and more efficient) extensions on top of deferred shading exist called deferred lighting and tile-based deferred shading. These are incredibly efficient at rendering large amounts of light and also allow for relatively efficient MSAA. However, for the sake of this tutorial's length I'll leave these optimizations for a later tutorial.


    DS gibt 1 Effektpunkt, geben "deferred lighting and tile-based deferred shading" einen zusätzlichen Punkt oder 0,5 Punkte hinzu?


    LG
    Jug


    /Edit: In den Effektpunkten steht nichts von light volumes im Bezug auf DS, gibt das womöglich auch schon 0,5 Punkte? ;)

    Danke für die Antwort außerhalb des Sommersemsters.

    Es ist hier sehr wohl möglich einen Shader zu haben der eine uniform Color in den G-Buffer schreibt und einen anderen Shader der eine Texture-Color schreibt.


    Wenn dies der Fall ist müste ich ja die Werte multiplizieren um an der Position die Fusion von Material- und Texturfarbe zu bekommen, was dann die Albedo ergibt die dann gerendert wird, oder? In vielen Tutorials wird von der Albedofarbe geredet die in den gBuffer geschrieben wird, aber ich möchte das nicht am CPU machen sondern auf der GPU, außer es muss natürlich sein. Denn wann und wo Materials mit der Texturfarbe multipliziert werden oder sollten steht in folgenden Tutorials nicht drinnen:


    1) http://learnopengl.com/#!Advanced-Lighting/Deferred-Shading
    2) http://www.codinglabs.net/tutorial_simple_def_rendering.aspx
    3) OpenGL Superbible Version 7, Seite 663, Deferred Shading
    4) http://ogldev.atspace.co.uk/www/tutorial35/tutorial35.html


    In 3) haben sie zwar ne materialId was dann beim rendern im deferredShading.frag mit:


    Code
    1. if (fragment.material_id != 0) // Render
    2. {...}
    3. //else, don't render


    abgefragt wird obs nun geredert wird oder nicht, Namensgebung is da total irreführend. Heißt es also ich muss ne zusätzliche Textur im gBuffer für Materials machen oder kann ich die Materials schon zu der Texturfarbe hinzurechnen und erst dann in den gBuffer schreiben? Bin noch etwas begriffsstuzig :)

    Hallo Leute,


    Materials sind Koeffizienten die das Reflektionsverhalten der Texturen beeinflussen, richtig? Ich habe ein Verständnisproblem mit dem Material bei Deferred Shading(DS), denn in allen Tutorials kommen im Code und in all den Shadern keine Materials vor, nur immer die Texturfarbe.In unserer.dae Datei kommen aber beide daher und werden auch ausgelesen, d.h.Texturen und Materials.



    Liege ich somit richtig das ich bei DS, da man ja nur ein Material verwenden kann was ja eigentlich die Textur im gBuffer ist(oder umgekehrt da es hier egal is, oder?:), also zu den Texturfarben die Materials schon beim Modelloaden hinzurechnen muss, weil ich es nacher im Shader nicht mehr kann ?



    Kurz und anders formuliert: Wie bekomm ich bei DS das Material in meine Textur rein?


    LG
    Jug


    Bei uns sieht es ähnlich aus:



    Was bisher mal nur ein light zum debuggen ist.


    Quote

    Auf NVidia Graphikkarten dürfte es mit der aktuellesten Version von NSight möglich sein GLSL-Shader direkt mit Breakpoints zu debuggen


    Wissen wir, leider sind wir eine der wenigen AMD Gruppen wie in der Mail erwähnt.


    Den Fehler wieso es nicht geht, da sind wir drauf gekommen, nur an der Behebung bzw. an der Begründung scheitern wir:
    Error.jpg
    Ganz links seht ihr unser light struct was für alle Lichter hergenommen wird, ambient ist blau, rest schwarz wegen debugging. in der mitte habt ihr wie wir verlinken und das ganze dann zeichnen in der draw methode. Rechts ist unser fragment shader code wo nur mal die diffuseColor wegen debugging ausgegeben wird. Sollte ja schwar sein nicht? Denkste! Es ist blau wie die ambient color, das lustige is das wenn man ambient im fragment shader nutzt ist es grün. Klarer Fall das da was falsch rein geschrieben wird, nur was und Wie? wir nutzten doch nur sizeof(light), &light? das muss doch passen?


    Danke für eure Anworten :) Kann jemand vielleicht jemand was zum http://glsl-debugger.github.io/ sagen? Der wurde bisher nicht erwähnt und sollte das durch steppen ja mehr oder weniger können, was sie selbst sagen. Wenn en Tutor mal rein schaun will nur zu, MultipleLights branch, letzter commit.


    Mehr oder weniger, bzw. muss es Sinn machen, da es den Shader kompilieren lässt. In Interface Block (GLSL) Shader Binding Index Setting und in der GLSL 4.3 Specification Seite 53 Anfang steht aber das die Version in meinem ersten Post gehen sollte. Mal sehen wie viele Workarounds zur offiziellen, veröffentlichen Version noch daher kommen...


    Danke jedenfalls für den Tipp!

    Hallo Leute,


    wir wollen UBO arrays verwenden wie hier in Interface Block (GLSL) Shader Binding Index Setting beschrieben:


    Code
    1. layout(binding = 2) uniform MatrixBlock{
    2. mat4 projection;
    3. mat4 modelview;
    4. } matrices[4];


    In unserem Fragment Shader ist dies drinnen:


    was beim kompilieren:


    erzeugt, weiß jemand wieso? Haben schon etwas gegoogled, File ist ANSI kodiert, std140, weg gelassen, direkt "4" statt der Konstanten hin geschrieben. Auch alle Veränderungen kombiniert, der ".frag" Shader will einfach nicht kompilieren.


    LG
    Jug, von Escape the University

    1k dank, du hast mich zum Fehler gebracht, er war auf unserer Seite. Wir haben den Szenegraph nicht gleich am Anfang sondern erst später implementiert und dadurch war noch das Durchlaufen durch alle Knoten im Graphen an der Stelle im Code unangepasst. Es wurden nur alle Knoten im ersten Level vom Baum durchlaufen, aber nicht alle Knoten auf allen Levels. :facepalm:

    Unterscheidet sich schon ja, aber vom Prinzip her gleich, wh wieder irgendwo ne Kleinigkeit vergessen oder übersehen.


    Escape the University is da Gruppenname und der Methodenaufruf dn->action(); ist am ende der RenderLoop::keyCallback(...) Methode.


    Edit: Wir haben noch kleine Lichtprobleme, nicht wundern wenn alles schwarz ist, aber bei den aufrufen sollte einfach nur true drinnen sein, dann wären wir schon zufrieden. ;) Auch nur über nen Tipp in die Richtige Richtung.

    Wir debuggen immer etwas bevor wir hier rein schreiben.

    Dumme Frage, aber seid ihr sicher, dass keyPress nur einmal aufgerufen wird?


    Ja sind wir, sind per Breakpoint durchgesteppt.

    // hier für das Element prüfen, ob 'open' false ist (muss es eigentlich sein, aber trotzdem prüfen)


    "open" ist false.

    dn->action();


    "open" wird auf true gesetzt.

    // hier für das Element prüfen, ob action() tatsächlich 'open' auf true gesetzt hat


    "open" ist false.
    Edit: Wir wussten schon das hier der Fehler ist, jedoch darf das doch eigentlich nicht sein oder?

    // hier die Variable allNodesInSceneGraph prüfen, ob 'open' für alle Elemente true ist


    hat ma nur den scope von Node*, wenn man auf DoorNode* castet ist "open" immer false.

    Hallo Leute,


    wie Überschrift schon sagt haben wir ein Problem mit Pointercasts, in unserem Szenegraph gibt es u.a. folgende Vererbung:


    Wenn wir nun durch den Szenegdraph laufen und alles rendern ist alles okay. Wenn aber wenn wir nun irgendwan per Tastendruck durch den den Szenengraph durch laufen und die Membervariable "open" in der action methode so verändern:


    und dann später ganz einfach alle Nodes im Scenegraph zeichnen wollen:

    Code
    1. for(Node* n : allNodesInSceneGraph)
    2. n-draw();


    Ist der Wert der Membervariable "open", wenn mal eine DoorNode::draw() aufgerufen wird, "false" aber nicht "true" oder vice versa. D.h. die Veränderung ist nicht gespeichert, obwohl wir ja nur auf Pointer operieren? Nebenbei, soweit ich das verstanden habe, was das downcasting sicher macht ist das bei der Szenengrapherstellung:

    Code
    1. vector<Node*>allNodesInSceneGraph;
    2. ...
    3. Node*n = new DoorNode();
    4. ...
    5. allNodesInSceneGraph.push_back(n);


    gemacht wird, daher die Frage, was machen wir falsch das die Membervariablenveränderung keinen Effekt zeigt?


    LG
    Jug

    Hallo Leute,


    um den Code leserlich zu halten machen wir in einem Header file:


    wobei "Mesh.hpp" im header file "Node.hpp" inkludiert ist. Im Kommentar vom Konstruktor im Code seht ihr was das Problem ist, hat jemand eine andere Lösung als keine verschachtelten Structs zu verwenden? Hier der Link vom Kommentar zum drauf klicken.


    Edit:


    Den Konstruktor auf:

    Code
    1. LightNode(glm::vec4 position, glm::vec4 ambient, glm::vec4 diffuse, glm::vec4 specular, glm::vec4 shininess);


    umzuwandeln hilft auch nicht.


    LG
    Gruppe Escape the University

    Wir verwenden Assimp um Collada-Dateien einzulesen.
    Besitzt ein Material einen Specular-Wert, trägt Blender das beim Export ins Material über solch einen Tag ein:

    HTML
    1. <specular>
    2. <color sid="specular">0.5 0.5 0.5 1</color>
    3. </specular>


    Der specular string wert der zum float* array gecastet wird hat 4 stellen, daher würde ich eure len variable auf 4 abfragen und nur die ersten 3 werte nehmen, dh mehr so in die Richtung gehen:


    Code
    1. if (len <= 3)
    2. DebugLogger::log("ModelLoader: Unexpected Length in $clr.specular: " + len);
    3. material.specularColor = glm::vec3(0, 0, 0);
    4. }
    5. else if (len == 4)
    6. material.specularColor = glm::vec3(data[0], data[1], data[2]);

    Lubuntu ist ein Ubuntu Derivat und läuft super bei mir, gerade weil es wirklich wenig Resourcen zum laufen benötigt und wenn da mal Eclipse, Tomcat, Datenbank, Skype, Thunderbird, und Firefox runter-, hochfahren bzw. einfach laufen kann es auch auf guten Rechnern eng werden. :) Habs daher mal ausprobiert und bin ganz zufrieden, kleine Linuxkrankheiten hat es gegeben aber nichts was ein Informatikstudent nicht mit Google lösen kann.


    itunes ist n Graus mit Linux, hab meinen dadruch kaputt gemacht, also Vorsicht ist geboten, ich hab n Linux progi verwenden, aber leider keine Ahnung mehr wie es hieß. Jetzt hab ich n USB-MP3-player (also ohne kabel, USB direkt am Gerät) und es funzt egal wo ohne irgendein Programm oder kodieren oder was weiß ich einwandfrei.