Autor Wątek: Deferred rendering - materiały  (Przeczytany 768 razy)

Offline 0x46415243494...

  • Użytkownik

# Listopad 28, 2012, 20:46:22
Witam,
ostatnio zrobiłem deferred rendering według tego tutoriala:http://www.catalinzima.com/tutorials/deferred-rendering-in-xna/ tylko że w DX11

I właśnie doszedłem do trudnego tematu... multiple materials :>
Z tego co czytałem to najpopularniejszym rozwiązaniem problemu jest wygenerowanie tekstury będącej zbiorem materiałów.
Jeśli chcę, żeby materiał to było coś takiego:
struct Material {
  float3 diffuse;
  // itd reszta komponentów
};
czyli materiał jednolity dla całego mesha, wtedy robię teksturkę o wymiarach ilość_komponentów_w_mat x ilość_materiałów i wypełniam ją materiałami
W ten sposób mam teksturę, w której w każdej linii mam 1 materiał, w shaderze pobierając piksel pobieram nic innego jak pojedynczy komponent materiału, na tej zasadzie to ma działać?
Czy można jednak zrobić to prościej?


Mam jeszcze 2 pytania z zupełnie innej bajki.
1. Czy zasoby DX11 typu IMMUTABLE (vertex/index buffery i textury) będą działać szybciej, niż DEFAULT, oraz czy jeśli tworząc zasób DX11 typu IMMUTABLE w CPU RAMie nie będzie jego kopii, bo dla DEFAULT pewnie istnieje w CPU jak i GPU RAMie.

2. Jeszcze znalazłem sprzeczne informacje na temat normal mappingu, a konkretnie jeśli mam wygenerowaną normal mapę w przestrzeni świata, czy mogę wykonywać obrót i translację, mesha do którego się odnosi. Przecież to zwykłe normalne, tak samo jak normalne wierzchołków, translacja nie wpłynie na nie wcale, a obrót jeśli przemnoży się je przez macierz obrotu, to powinny być nadal poprawne normalne tylko... obrócone, czyż nie?
W jednym miejscu czytam, że jakiekolwiek transformacje są zabronione w drugim, że tylko skalowanie jest ble.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych