Domanda

C'è un modo per scoprire se una luce è attivata in GLSL che non comporta il passaggio attributi o la creazione di una tonnellata di diversi shaders?

Cosa succede ad usare C di Nvidia per la grafica (CG)? Posso farlo con Cg?

Sono ormai convinto che non si può fare. Ma ora mi chiedo: perché non

È stato utile?

Soluzione

Secondo la mia comprensione di "Attivare o non abilitare" parte di GLSL errori comuni questa è una ragione filosofica: shader sono scritti per ignorare gasdotto fisso, quindi non dovrebbero fare affidamento su stati condutture fisse. Devi usare uno shader diverso per ogni funzionalità è necessario.

Inoltre credo che questo potrebbe essere una scelta di progettazione basata sul fatto che i rami sono costosi sulla GPU e qualcuno deve aver pensato che non si dovrebbe fare le cose come

if (gl_LightSource[0].enabled)
{ ... }

in primo luogo.

Altri suggerimenti

unforgiven3 è giusto - GLSL non fornisce l'accesso al tubo fisso consentire agli Stati. Bisogna passare come una divisa.

Se GLSL è qualche cosa come HLSL (equivalente di DirectX), che ho il sospetto che è, penso che si è bloccato con attributi di passaggio.

: - (

È possibile impostare il colore della luce a (0,0,0,0) e uno dei due rami su questo, o semplicemente lasciarlo anello sopra le luci ora non contribuiscono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top