[lnkForumImage]
Download FREE Software.

Confronta i prezzi di migliaia di prodotti.
News Forum Italiano
 Home | Login | Registrati | Ricerca 


 

Forums >

it.comp.giochi.sviluppo

parametri vertex/pixel shader

Matteo Dello Ioio

28/04/2009 09:28:53

Ciao a tutti!
Stavo smanettando col linguaggio HLSL e mi sono ritrovato col seguente
inghippo.

Ho definito una struttura per i parametri di input del VS in questo
modo:

struct VS_INPUT
{
float4 vPos : POSITION;
float3 vNormal : NORMAL;
float2 vTexCoord0 : TEXCOORD0;
};

e il VS relativo:

VS_OUTPUT RenderSceneVS( VS_INPUT Input )
{
// ...
}

ma quando vado ad eseguire fxc mi sfancula dicendo:

error X3502: 'RenderSceneVS': input parameter 'Input' missing
semantics

per completezza ecco la riga di comando per il compiler:

fxc /T vs_1_1 /E RenderSceneVS /Fc basic_shader.fx basic_shader.txt

Se definisco i parametri uno ad uno invece che mettendoli in una
struttura tutto fila liscio, ma siccome ho trovato questa notazione in
un libro sulle DirectX la cosa mi insospettisce un pò.
Prima di dare fuoco al libro in questione volevo sapere la vostra
opinione... :)

Grazie e buon lavoro!

7 Risposte

Davide Pasca

29/04/2009 04:31:10

0

On Apr 28, 6:28 pm, Jojo <matteo.delloi...@gmail.com> wrote:
[...]
> struct VS_INPUT
> {
>         float4 vPos : POSITION;
>         float3 vNormal : NORMAL;
>         float2 vTexCoord0 : TEXCOORD0;
>
> };
[...]
> error X3502: 'RenderSceneVS': input parameter 'Input' missing
> semantics
[...]
> Se definisco i parametri uno ad uno invece che mettendoli in una
> struttura tutto fila liscio, ma siccome ho trovato questa notazione in

....ummm.. sicuro che quando passi i parametri uno ad uno non cambia
altro ?
A prima vista dovrebbe funzionare.. ma non sono sicuro. Prova ad usare
una versione piu' avanzata di vertex e pixel shader ..tipo la 2.0 o
3.0.. ma non 4.0 perche' poi cominciano ad essere richieste semantiche
specifiche tipo SV_POSITION.
In oltre vedo che forzi il vertex shader a 1.1 ma non so cosa succeda
per la versione del pixel shader in questo caso..

bauuuu
Davide

Matteo Dello Ioio

29/04/2009 09:41:02

0

> ...ummm.. sicuro che quando passi i parametri uno ad uno non cambia
> altro ?
uhm...no se passo i parametri ad uno ad uno funziona!

VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD0 )
{
// ...
}

Per quanto riguarda la versione del vs ho provato ad usare anche la
2.0 ma il risultato è lo stesso.

Matteo Dello Ioio

29/04/2009 13:59:10

0


> ...ummm.. sicuro che quando passi i parametri uno ad uno non cambia
> altro ?

così funge

VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD0 )
{
// ...
}


> A prima vista dovrebbe funzionare.. ma non sono sicuro. Prova ad usare
> una versione piu' avanzata di vertex e pixel shader ..tipo la 2.0 o
> 3.0.. ma non 4.0 perche' poi cominciano ad essere richieste semantiche
> specifiche tipo SV_POSITION.
> In oltre vedo che forzi il vertex shader a 1.1 ma non so cosa succeda
> per la versione del pixel shader in questo caso..

ho impostato il vs alla versione 1.1 nel timore che tentasse di usare
la versione più recente, ma anche provando con le altre il risultato
non cambia


ciao!

Davide Pasca

01/05/2009 05:59:20

0

On Apr 29, 10:59 pm, Jojo <matteo.delloi...@gmail.com> wrote:
[...]
> così funge
>
> VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
>          float3 vNormal : NORMAL,
>          float2 vTexCoord0 : TEXCOORD0  )
[...]
> ho impostato il vs alla versione 1.1 nel timore che tentasse di usare
> la versione più recente, ma anche provando con le altre il risultato
> non cambia

ummmm.. prova a non impostare nessuna versione.
Strano che non funzioni.. personalmente non uso fxc ma compilo
direttamente.. ed uso gli effects versione 4.0 ..e le strutture come
input funzionano.. ma anche in passato con DX9.

Prova a specificare l'input come "const":

VS_OUTPUT RenderSceneVS( VS_INPUT Input ) ..diventa
VS_OUTPUT RenderSceneVS( const VS_INPUT Input )

baubau,
Davide

Matteo Dello Ioio

04/05/2009 11:00:07

0

On 1 Mag, 07:59, Davide Pasca <dpa...@gmail.com> wrote:
> On Apr 29, 10:59 pm, Jojo <matteo.delloi...@gmail.com> wrote:
> [...]
>
> > così funge
>
> > VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
> >          float3 vNormal : NORMAL,
> >          float2 vTexCoord0 : TEXCOORD0  )
> [...]
> > ho impostato il vs alla versione 1.1 nel timore che tentasse di usare
> > la versione più recente, ma anche provando con le altre il risultato
> > non cambia
>
> ummmm.. prova a non impostare nessuna versione.
> Strano che non funzioni.. personalmente non uso fxc ma compilo
> direttamente.. ed uso gli effects versione 4.0 ..e le strutture come
> input funzionano.. ma anche in passato con DX9.
>
> Prova a specificare l'input come "const":
>
> VS_OUTPUT RenderSceneVS( VS_INPUT Input )  ..diventa
> VS_OUTPUT RenderSceneVS( const VS_INPUT Input )
>
> baubau,
> Davide

Allora sono riuscito a farlo funzionare ma con alcune piccole
modifiche...
Ho eliminato i membri della struttura di input che non avevano una
semantica e li ho inseriti come parametri della funzione in questo
modo

struct VS_INPUT
{
float4 vPos : POSITION;
float3 vNormal : NORMAL;
float2 vTexCoord0 : TEXCOORD;
};

....

VS_OUTPUT RenderSceneVS( VS_INPUT Input, uniform int nNumLights,
uniform bool bTexture )
{
// ...
}

Davide Pasca

04/05/2009 13:20:21

0

On May 4, 8:00 pm, Jojo <matteo.delloi...@gmail.com> wrote:
[...]
> Allora sono riuscito a farlo funzionare ma con alcune piccole
> modifiche...
> Ho eliminato i membri della struttura di input che non avevano una
> semantica e li ho inseriti come parametri della funzione in questo
> modo
>
> struct VS_INPUT
> {
>         float4 vPos : POSITION;
>         float3 vNormal : NORMAL;
>         float2 vTexCoord0 : TEXCOORD;
>
> };
>
> ...
>
> VS_OUTPUT RenderSceneVS( VS_INPUT Input, uniform int nNumLights,
> uniform bool bTexture )

...Grazie per il follow up.. ma riguardo alla cosa in generale.. ti
PREGOOO !!! La prossima volta che hai un problema, riportalo
correttamente.
Dal codice che hai mostrato non era' nessun elemento senza semantica
nella struttura.. per cui il problema non sembrava sussistere.
GHHHG GHHH GHHH !!!!

Davide

Matteo Dello Ioio

04/05/2009 16:13:36

0

On 4 Mag, 15:20, Davide Pasca <dpa...@gmail.com> wrote:
> On May 4, 8:00 pm, Jojo <matteo.delloi...@gmail.com> wrote:
> [...]
>
>
>
> > Allora sono riuscito a farlo funzionare ma con alcune piccole
> > modifiche...
> > Ho eliminato i membri della struttura di input che non avevano una
> > semantica e li ho inseriti come parametri della funzione in questo
> > modo
>
> > struct VS_INPUT
> > {
> >         float4 vPos : POSITION;
> >         float3 vNormal : NORMAL;
> >         float2 vTexCoord0 : TEXCOORD;
>
> > };
>
> > ...
>
> > VS_OUTPUT RenderSceneVS( VS_INPUT Input, uniform int nNumLights,
> > uniform bool bTexture )
>
> ..Grazie per il follow up.. ma riguardo alla cosa in generale.. ti
> PREGOOO !!! La prossima volta che hai un problema, riportalo
> correttamente.
> Dal codice che hai mostrato non era' nessun elemento senza semantica
> nella struttura.. per cui il problema non sembrava sussistere.
> GHHHG GHHH GHHH !!!!
>
> Davide

chiedo umilmente perdono!!!!!!!! :)
dalla fretta di risolvere e dal casino che avevo in testa ho postato
del codice al posto di un altro! hai voglia a sclerarci dietro!!!

Giusto per cercare di dare un senso all'intero thread riporto la
struttura di input ORIGINALE che causava problemi.

struct VS_INPUT
{
float4 vPos : POSITION;
float3 vNormal : NORMAL;
float2 vTexCoord0 : TEXCOORD;
int nNumLights;
bool bTexture;
};

ciauz!