PDA

View Full Version : [advanced]GLSL/HLSL


shinya
31-08-2005, 07:59
Ci sto sbattendo la testa da un giorno ma mi riesce di farlo funzionare.
Sto scrivendo un piccolo shader in glsl da applicare su un cubo. Vorrei che i pixel all'interno delle facce del cubo si muovessero a mo' di onda.
Ho provato qualcosa tipo:

void main()
{
vec4 v = vec4(gl_Vertex);

v.z = sin(5.0*v.x + time*0.01)*0.25;

gl_Position = gl_ModelViewProjectionMatrix * v;
}


dove time e' un float uniform che gli passo da opengl. Nella mia testa la dimensione z di ogni vertice dovrebbe flutturare secondo la funzione y=sin(x), con x che varia nel tempo.
Invece dal cubo che era diventa un semplice quadrato e non fa nient'altro :cry:

Ho provato a cercare di capire se sia possibile modificare la posizione dei pixel nel fragment shader, ma pare sia possibile stabilire solo il colore.

In HLSL si puo' definire la posizione del pixel nel pixel shader?
Qualcuno che ha usato entrambi mi puo' comparare i due linguaggi?

ps. sono in quella fase in cui non riesco a decidermi tra directx e opengl per le mie demo...come siamo messi con opengl 2.0? e' gia' "usabile"?

okay
31-08-2005, 14:06
ti consiglio questo link per risolvere:

http://www.gameprog.it/index.php?action=forum

MSciglio
31-08-2005, 21:42
In HLSL si puo' definire la posizione del pixel nel pixel shader?


All'interno del pixel shader non puoi ridefinire la posizione dato che hai a che fare con pixel già rasterizzati.