XYZ - 3D World

XYZ - 3D World

Posts 1-10 of 10
  • Andrea Bracciale
    Andrea Bracciale
    The company name is only visible to registered members.
    Shaders
    Devo iniziare a lavorare con i vertex shaders e, a parte una conoscenza teorica sull'argomento, non conosco molto della programmazione o dei programi utilizzati. Mi potete consigliare qualche libro, sito o tecnica per imparare a programarli rapidamente?


    Grazie
  • Marco Licenziato
    Marco Licenziato
    The company name is only visible to registered members.
    Re: Shaders
    Ciao Andrea,
    anche se mi occupo solo di grafica e non di programmazione lavoro nel campo dei video games da qualche anno. Per esserti d'aiuto dovrei sapere su quali shader vuoi lavorare e a cosa ti servono. Molto dipende dall'engine che stai utillizando e se vuoi programmare gli shaders in DirectX o in OpenGL. Come tool attualmente validi e performanti c'è FX COmposer 2 della NVidia che puoi scaricare gratuitamente dal sito NVidia. Abbastanza semplice da utilizzare ma usa una sintassi che si distacca dallo standard HLSL o GLSL. Se vuoi programmare shader con un linguaggio standard puoi scaricare dal sito della ATI RenderMonkey che ti permette di scrivere i vertex e i fragment programs e vedere l'effetto e debuggare il tutto. Anche se un pò più macchinoso magari all'inizio ti permette però di capire bene cosa stai programmando. Per quanto riguarda le letture in rete trovi tantissimo materiale per DirectX ma se ti interessa Open GL ti consiglio di leggere "OpenGL Shading Language 2nd Edition" e di studiarti gli esempi presenti sul sito di Nvidia.
    Spero di esserti stato utile. Ciao
  • Post visible to registered members
  • Marco Licenziato
    Marco Licenziato
    The company name is only visible to registered members.
    Re: Re: Re: Shaders
    gli shaders di cui parliamo è un vero e proprio linguaggio di programmazione ad alto o basso livello che istruisce la GPU su come comportarsi con vertici, textures, luci e tutto quello che concerne il rendering real-time. Con gli shader si può programmare la GPU per disegnare un semplice triangolo o gestire il morphing per animazioni scheletriche, in sostanza tutto quello che può essere gestito dalla scheda grafica e dalla sua GPU può essere programmato attraverso gli shader.
    Con gli shader si possono simulare effetti real-time a 60 frame al secondo che in off-line richiederebbero minuti di rendering. Esistono oggi shader che simulano il Sub-Surface-Scattering, Il Dsplacement Map, Illuminazione dinamica, Ambient Occlusion, e tanti altri effetti.
    Il campo in cui maggiormente vengono utilizzati gli shader sono i video games e tutte le applicazioni che girano in realtime. Tutti i videogiochi moderni utilizzano shader per rendere realistico e accattivante la grafica, che simuli riflessioni, rifrazioni, il comportamento della pelle alla luce o la plastica o il metallo. Basta fare un giro tra le immagini degli ultimi giochi in uscita sul mercato per capire che non c'è un poligono, una texture, che non passi attraverso uno shader che ne controlli il comportamento.
    Tutto questo ovviamente ha un prezzo. Uno shader utilizza delle funzoini matematiche approssimate. Il che significa che l'effetto sembra visivamente corretto ma è fisicamente approssimato. Per poter dare almeno 60 frame al secondo mi sembra il minimo!
    Ciò vuol dire che, almeno per il momento, bisogna scendere spesso a compromessi. Non si possono renderizzare in realtime troppe luci, troppi poligoni, shader eccessivamente pesanti, maggiore sarà il dettaglio minore deve essere la qualità e il tempo di calcolo di ogni singolo shader...
    Si può ipotizzare che in un futuro, neanche tanto lontano, la differenza tra una scena renderizzata off-line e una in real-time sarà talmente minima da creare sconcerto in chi ha speso ore e ore di rendering in attesa di un unico frame!
    GPU più potenti e sempre più veloci potranno renderizzare sempre più poligoni e fare calcoli più complessi diminuendo l'approssimazione degli shader.
  • Post visible to registered members
  • Andrea Bracciale
    Andrea Bracciale
    The company name is only visible to registered members.
    Re: Re: Shaders
    Grazie, mi sei stato molto utile. In effetti avevo dimenticare di dire che ho bisogno di programmare gli shaders in DirectX e che mi servono per creare effetti visivi per un'applicazione real time, riflessione e rifrazione della luce, esplosioni e cose di questo tipo. Proverò i tool che mi hai suggerito e vedrò come funzionano. Iniziare è sempre un po duro, anche perchè si parla di programmazione a basso livello! Ciao
  • Post visible to registered members
  • Marco Licenziato
    Marco Licenziato
    The company name is only visible to registered members.
    Re: Re: Re: Re: Re: Re: Shaders
    Purtroppo non conosco autodesk showcase ma da quello che ho letto non credo funzioni con gli shader program.
  • Marco Licenziato
    Marco Licenziato
    The company name is only visible to registered members.
    Re: Re: Re: Re: Re: Shaders
    Ovviamente hai ragione, non volevo assolutamente paragonare un renderng real-time con uno fotorealistico off-line ma non bisogna sottovalutare la potenza di calcolo delle GPU che, a differenza delle CPU, crescono e aumentano le loro capacità di calcolo molto più rapidamente. Oggi, escluso se usi Gelato di Nvidia, nessun renderizzatore off-line utilizza e sfrutta la potenza di calcolo delle GPU e tutto il carico e il flusso rendering è gestito dalla CPU.
    Può darsi che non si raggiugerà mai il fotorealismo con milioni di poligoni in real-time ma non dimentichiamo che 20 anni fa quando si giocava a pacman non si poteva neanche imamgire che oggi avremo avuto giochi come crysis....Prova a visitare il sito e vedere le immagini in cui si confrontano delle foto e le relative ricostruzioni renderizzate in realtime ;)
  • Post visible to registered members