2012-07-19 22 views

risposta

13

No.

Se si desidera passare uniformi per uno shader frammento, si può facilmente farlo (vedere alcun tutorial). Ma se vuoi qualcosa di simile agli attributi per vertice, non ha senso farlo. Quello che puoi fare è passare gli attributi allo shader del vertice, e poi nel vertex shader passarli allo shader del frammento come variazioni. Saranno interpolati sulla primitiva e forniti come input per lo shader del frammento.

+0

Tim, questa risposta è scattata sul posto per me proprio come uniformi, attributi e variazioni lavorano insieme. Grazie! – Jackalope

+1

L'interpolazione può essere controllata in qualche modo? In caso di una fonte di luce (torcia), ad esempio, non si desidera che la variazione causi un'evidenziazione nei triangoli utilizzati per ogni quadrato. Invece di un round O, si ottiene qualcosa come una O con un \ o/attraverso di esso, purtroppo. –

1

La risposta di Tim è ovviamente corretta.

Una possibile soluzione sarebbe quella di memorizzare i valori float in una trama 2D e passare le coordinate di trama (e il numero di valori) allo shader. Tuttavia, questo può diventare molto lento se si dispone di un numero elevato di valori float per vertice (a causa di tutte le ricerche di texture per frammento). Un altro problema è che questo genera trame molto grandi se si hanno molti vertici. Ad ogni modo, in alcuni casi questo approccio può essere utile.

Problemi correlati