tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Matthias Reitinger
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
426
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo. Vorab ein paar Infos:
    DirectX9.0c, Shaderversion 2.0.
    Mein Problem besteh darin für DrawIndexedPrimitive 2 Shader zu benutzen. Ich dachte mir so:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    Effect1->Begin();
    Effect2->Begin();
    Effect1->Pass(0);
    Effect2->Pass(0);
    DrawIndexedPrimitive(...);
    Effect1->End();
    Effect2->End();
    So funktioniert aber leider nur der erste Shader :/ Ich verwende eine Effectklasse meiner Engine. Deswegen nu Start, Pass und End. Das ziel ist eigentlich ein Materialshader(Effect1) und dann der Phongbeleuchtungsshader(Effect2) zusammen zu verwenden und dann das Objekt mit der Textur die von Effect1 und 2 verändert wurde zu rendern.
    Danke im Voraus
    Geändert von MSVCplusplus (08.02.12 um 20:54 Uhr)
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hallo,

    wie du schon bemerkt hast, kann pro Pipeline-Stage höchstens ein Shaderprogramm aktiv sein. Dir bleiben im Grunde zwei Möglichkeiten: entweder du zeichnest das Modell in zwei Passes, also in etwa so:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Effect1->Begin();
    Effect1->Pass(0);
    DrawIndexedPrimitive(...);
    Effect1->End();
     
    Effect2->Begin();
    Effect2->Pass(0);
    DrawIndexedPrimitive(...);
    Effect2->End();
    Im zweiten Pass musst du Blending aktivieren, damit sich am Ende die richtige Farbe ergibt.

    Die zweite Möglichkeit wäre, die Berechnungen beider Shader in einen Shader zu kombinieren. Dann kommst du mit nur einem Pass aus.

    Grüße,
    Matthias
    MSVCplusplus bedankt sich. 
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Wie meinst du das mit Blending?
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  4. #4
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Mittels Blending kannst du die erzeugten Pixel mit den bereits im Framebuffer stehenden Farben kombinieren, anstatt sie lediglich zu überschreiben. Ohne Blending würde der 2. Pass die Farben aus dem 1. Pass einfach überschreiben. Siehe http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  5. #5
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Danke Aber dennoch stehe ich etwas auf der Leitung -.-
    Also effect 1 benutzen und dann das selbe nochmal mit Blending und Effect2 Rendern?
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  6. #6
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Zitat Zitat von MSVCplusplus Beitrag anzeigen
    Danke Aber dennoch stehe ich etwas auf der Leitung -.-
    Also effect 1 benutzen und dann das selbe nochmal mit Blending und Effect2 Rendern?
    Ja.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  7. #7
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    OK also mein Code:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    
    D3D.SetRS(D3DRS_ALPHABLENDENABLE,TRUE);
    D3D.SetRS(D3DRS_SRCBLEND,D3DBLEND_ONE);
    D3D.SetRS(D3DRS_DESTBLEND,D3DBLEND_ZERO);
    Object->Render(effect);
     
    D3D.SetRS(D3DRS_SRCBLEND,D3DBLEND_ZERO);
    D3D.SetRS(D3DRS_DESTBLEND,D3DBLEND_SRCCOLOR);
    Object->Render(effect2);
    Leider sehe ich nur den letzten Effekt: Meine Blendeinstellungen scheinen nicht korrekt zu sein
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  8. #8
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Fehler gefunden Alte Farbe * 0 ist null
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

Ähnliche Themen

  1. 3D Modell von einem Atomkraftwerk
    Von l3x im Forum Cinema 4D
    Antworten: 3
    Letzter Beitrag: 06.06.11, 15:20
  2. ER-Modell von einem Forum - Wo?
    Von ZodiacXP im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 28.07.08, 13:32
  3. DLL Funktionen in einem Thread benutzen
    Von Twinsetter im Forum Delphi, Kylix, Pascal
    Antworten: 0
    Letzter Beitrag: 16.07.07, 01:07
  4. Glühen-Material auf einem Danel-Shader
    Von styko im Forum Cinema 4D
    Antworten: 6
    Letzter Beitrag: 28.11.04, 01:11
  5. Ich brauche ein Modell von einem Aschenbecher.
    Von D3v3r$3r1108 im Forum Cinema 4D
    Antworten: 3
    Letzter Beitrag: 11.12.01, 07:07