[C/C++] Frage zu Pixelshader

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von razor90, 23. Mai 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 23. Mai 2007
    Frage zu Pixelshader

    Hallo,
    ich bekomms einfach ned hin nen funktionierenden Pixel-Shader (in HLSL) zu schreiben^^

    hier mal nen bissl code:

    Code:
    #define D3DFVF_TLVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1)
    
    ...
    
    g_pd3dDevice->SetFVF(D3DFVF_TLVERTEX);
    
    g_pd3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
    g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
    g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
    g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
    g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
     
    g_pd3dDevice->SetTexture (0, tex);
    
    g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2);
    Wie muss der Pixelshader aussehen (parameter usw) damit er funzt?

    mfg r90
     
  2. 24. Mai 2007
    AW: Frage zu Pixelshader

    ein Pixelshader wird z.B. in einer seperaten Datei gespeichert und muss dann vom eigentlichen DirectX Programm geladen werden.
    das einzige was du machst ist RenderStates zu setzen.

    was hat der code den du da zeigst mit nem Pixelshader zu tun?
     
  3. 24. Mai 2007
    AW: Frage zu Pixelshader

    Die frage ist welche Inputparameter der Shader, bei dem im Code gezeigten Vertex-typ usw., selber haben muss.... TEXCOORD0 usw.

    Das DX-SDK isn bissl schwach was Shader angeht...

    mfg r90
     
  4. 24. Mai 2007
    AW: Frage zu Pixelshader

    Hi

    1.TEXTURE durch texture ersetzen
    2.Rückgabesemantic deiner Funktion von COLOR zu COLOR0 ändern
    3.TECHNIQUE und PASS schreib ich auch immer klein


    texture Tex;

    sampler LinearSampler = sampler_state {
    Texture = <Tex>;
    AddressU = Wrap;
    AddressV = Wrap;
    MIPFilter = Linear;
    MinFilter = Linear;
    MagFilter = Linear;
    };

    float4 PixelShaderProc(float2 Texture : TEXCOORD0, float4 Diffuse : COLOR0) : COLOR0 {
    return tex2D(LinearSampler, Texture) * Diffuse;
    }


    technique T1
    {
    pass P1
    {
    PixelShader = compile ps_1_1 PixelShaderProc();
    }
    }


    das könnte dann so aussehen.

    Greetz Snake
     
  5. 25. Mai 2007
    AW: Frage zu Pixelshader

    bin jez auch auf was ähnliches gekommen^^

    Code:
    texture gtex;
    
    sampler samp =
    sampler_state
    {
     AddressU = Clamp;
     AddressV = Clamp;
     Texture = <gtex>;
     MipFilter = LINEAR;
     MinFilter = LINEAR;
     MagFilter = LINEAR;
    };
    
    struct PS_INPUT
    {
     float4 Position : POSITION; // vertex position 
     float4 Diffuse : COLOR0; // vertex diffuse color (note that COLOR0 is clamped from 0..1)
     float2 TextureUV : TEXCOORD0; // vertex texture coords 
    };
    
    float4 MyShader( PS_INPUT In ) : COLOR0
    {
     float4 outp;
    
     outp = tex2D(samp, In.TextureUV) * In.Diffuse;
     
     return outp;
    }
    
    
    technique PostProcess
    {
     pass p0
     {
     VertexShader = NULL;
     PixelShader = compile ps_2_b MyShader();
     }
    
    }
    *closed*

    mfg r90
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.