Sto provando a eseguire il rendering su due trame con un passaggio utilizzando C++ directx 11 SDK. Voglio che una texture contenga il colore di ciascun pixel dell'immagine risultante (ciò che normalmente vedo sullo schermo quando si esegue il rendering di una scena 3D) e un'altra texture per contenere la normale di ogni pixel e profondità (3 float per normale e 1 float per profondità). In questo momento, quello che posso pensare è creare due target di rendering e rendere il primo passaggio come i colori e il secondo passare le normali e la profondità rispettivamente a ciascun target di rendering. Tuttavia, sembra una perdita di tempo perché posso ottenere le informazioni sul colore, sulla normale e sulla profondità di ciascun pixel nel primo passaggio. Quindi c'è un modo per produrre in qualche modo due trame con il pixel shader?Rendering su più trame con un passaggio in directx 11
Qualsiasi aiuto sarebbe apprezzato.
P.S. Sto pensando a qualcosa sulla falsariga di RWTexture2D o RWStructuredBuffer nel pixel shader. Un po 'di background: avrò bisogno delle due immagini per un'ulteriore elaborazione nello shader di elaborazione. Il che fa emergere una questione di sincronizzazione: dato che il pixel shader (a differenza dello shader di calcolo) scrive ogni pixel uno alla volta, come faccio a sapere quando il pixel shader è finito e dire allo shader di elaborazione di avviare la post-elaborazione dell'immagine?
Grazie. Soprattutto per i collegamenti. Non puoi iniziare a immaginare quanto siano utili. Grazie ancora. A proposito, con "depth buffer", intendi un valore di SV_Depth per il pixel shader? (Penso di aver letto da qualche parte, ma non ne sono troppo sicuro.) +1 e risposta accettata. – l3utterfly
Nessun problema. SV_Depth è se vuoi scrivere il tuo valore di profondità, è utile in alcuni casi (profondità dai raytracers di PixelShader o da alcuni archi Texture Array). Quello che intendevo è che la risorsa DepthStencil può essere anche associata come Shader Resource View, quindi dal momento che si associa anche un buffer di profondità alla scena, si potrebbe riutilizzarlo, è gratuito) – catflier