Verstehen, wie texCUBE funktioniert, und ordnungsgemäßes Schreiben von Cubemaps in ein Cube-Rendertarget

7

Mein Ziel ist es, genaue Reflexionen für bestimmte 3D-Objekte (hauptsächlich Lichter) in XNA 4.0 zu erstellen, die anhand einer dynamischen Cubemap abgetastet wurden.

Um die Cubemap abzutasten, berechne ich den 3D-Reflexionsvektor auf klassische Weise:

    half3 ReflectionVec = reflect(-directionToCamera, Normal.rgb);

Ich benutze dann den Vektor, um die tatsächlich reflektierte Farbe zu erhalten:

    half3 ReflectionCol = texCUBElod(ReflectionSampler, float4(ReflectionVec, 0));

Die Cubemap, aus der ich eine Stichprobe mache, ist ein RenderTarget mit 6 flachen Flächen.

Meine Frage ist also angesichts der 3D-Weltposition eines beliebigen 3D-Objekts, wie ich sicherstellen kann, dass ich beim erneuten Rendern der Cubemap genaue Reflexionen dieses Objekts erhalte. Sollte ich die ViewProjection-Matrix auf eine bestimmte Weise erstellen? Oder gibt es einen anderen Ansatz?

Cubrman
quelle

Antworten:

0

Das einfallende Licht, das reflektiert wird, entspricht normalerweise dem ursprünglichen Objekt, es sei denn, es wird selbst reflektiert, gebogen oder auf andere Weise verändert. Die Genauigkeit der Reflexion ist relativ zu den Eigenschaften des reflektierenden Materials und der Geometrie.

Dieser Link bietet mehr Informationen zu diesem wunderbaren Thema. http://en.wikipedia.org/wiki/Fresnel_equation .

Im Idealfall wird Ihre Würfelkarte aus derselben Projektion generiert, mit der Sie die Geometrie normal sehen möchten. Obwohl es Spaß machen könnte, damit herumzuspielen.

Evan
quelle