Farbpalette und D3D



  • Hallo,
    gibts ne leichte Antwort auf ne schwere Frage:

    Wie kann ich
    meine Dreiecke in D3D an Hand einer Farbpalette (ca 1k einträge RGBA) colorieren?
    zu jedem vertex x,y,z gehört noch ein f, das auf die palette gemappt werden soll ..

    wie bring ich DirectX bei: shade nach der Palette ?

    Brauche Hilfe, 😞
    is dringend.

    Danke!


  • Mod

    mit einer envmap könnte das mit den niedrigsten hardware anforderungen gehen. ansonsten vielleicht mit vertexshadern indem du mit f in die const-register indizierst.

    rapso->greets();



  • von den const Regs hab ich 96. das reicht nicht aus 😞

    im Ziel soll ein Temperatur verlauf auf zB einen Würfel
    gelegt werden. Die Temperaturen ändern sich aber, sonst hätt
    ich es mit nem bitmap probiert.

    Mit so vielen Pal-Einträgen kann ich auch hervorragend
    ISO-Linien zeichnen.

    2 Fliegen mit einer Klappe - wenn s denn funzt.

    😕 Hilf mir doch bitte mit der EnvMap auf die Sprünge!


  • Mod

    dann nimm VS2.0, da haste mindestens 256 consts

    rapso->greets();



  • Geht es nicht auch mit dependant Texture reads, oder wie der Spass heisst?

    Bye, TGGC \-/


  • Mod

    das heißt envmap bei d3d, war mein erster vorschlag.

    // Set up texture stage 0's states for the bumpmap
    		m_pD3DD8->SetTexture( 0, m_Env );
    		m_pD3DD8->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_BUMPENVMAP );
    		m_pD3DD8->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );//hier kannst du statt texture dann  deinen colorwert (D3DTA_DIFFUSE) aus dem vertexshader benutzen
    		m_pD3DD8->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_CURRENT );//sollte bei BUMPENFMAP ignoriert werden
    
    //inline DWORD CWater::F2DW( FLOAT f ) { return *((DWORD*)&f); } //aus dem D3d sample zum envmapping
    		m_pD3DD8->SetTextureStageState( 0, D3DTSS_BUMPENVMAT00,   *(DWORD*) &m_matBumpMat.m_11 );
    		m_pD3DD8->SetTextureStageState( 0, D3DTSS_BUMPENVMAT01,   *(DWORD*) &m_matBumpMat.m_12 );
    		m_pD3DD8->SetTextureStageState( 0, D3DTSS_BUMPENVMAT10,   *(DWORD*) &m_matBumpMat.m_21 );
    		m_pD3DD8->SetTextureStageState( 0, D3DTSS_BUMPENVMAT11,   *(DWORD*) &m_matBumpMat.m_22 );
    
    // wobei m_matBumpMat [] = {1.f,0.f,0.f,1.f}; für dich wäre
    

    btw, mit colors als envmap referenzwert hatte ich das bisher noch nicht probiert, müßte aber problemlos gehen.

    rapso->greets();



  • ich würd eine 1D textur machen ( z.b. 256 x 1 ) wo jeder pixel eine farbe hat und dann den f wert zum samplen der entspr. farbe in einem pixel shader nehmen.



  • @dot : das is die Lösung!
    hatte auch in die richtung probiert und .. 😃

    bau mir jetzt nen png (incl Alpha-kanal) und das soll dann schon sein.

    Danke an alle!



  • dot schrieb:

    ich würd eine 1D textur machen ( z.b. 256 x 1 ) wo jeder pixel eine farbe hat und dann den f wert zum samplen der entspr. farbe in einem pixel shader nehmen.

    Das wars eigentlich, was ich meinte.

    Bye, TGGC \-/



  • naja

    TGGC schrieb:

    dependant Texture reads

    war mir zugegebenermaßen kein begriff und klingt irgendwie kompliziert 😉


  • Mod

    versteh nun nichts falsches drunter. dependent texturereads sind texturereads die vom resultat anderer texturereads abhängen.
    die jetzig angenommene lösung ist simples 1d-texture mapping, hat nichts mit dependent texture reads zu tun.

    rapso->greets();



  • rapso schrieb:

    versteh nun nichts falsches drunter. dependent texturereads sind texturereads die vom resultat anderer texturereads abhängen.
    die jetzig angenommene lösung ist simples 1d-texture mapping, hat nichts mit dependent texture reads zu tun.

    rapso->greets();

    Aha, dann bin ich da wohl falsch informiert.

    Bye, TGGC \-/



  • also wär dann z.b. ein texreg2gb ein dependant texture read!?


Anmelden zum Antworten