USe local var to simplify code and fix MaterialShaderDataPerView struct to use new alignment for constant buffers data

This commit is contained in:
Wojtek Figat
2024-06-28 08:50:14 +02:00
parent 138e17508b
commit e265b760c1

View File

@@ -20,7 +20,7 @@
#include "DeformableMaterialShader.h"
#include "VolumeParticleMaterialShader.h"
PACK_STRUCT(struct MaterialShaderDataPerView {
GPU_CB_STRUCT(MaterialShaderDataPerView {
Matrix ViewMatrix;
Matrix ViewProjectionMatrix;
Matrix PrevViewProjectionMatrix;
@@ -73,20 +73,20 @@ void IMaterial::BindParameters::BindViewData()
}
// Setup data
const auto& view = RenderContext.View;
MaterialShaderDataPerView cb;
int aa1 = sizeof(MaterialShaderDataPerView);
Matrix::Transpose(RenderContext.View.Frustum.GetMatrix(), cb.ViewProjectionMatrix);
Matrix::Transpose(RenderContext.View.View, cb.ViewMatrix);
Matrix::Transpose(RenderContext.View.PrevViewProjection, cb.PrevViewProjectionMatrix);
Matrix::Transpose(RenderContext.View.MainViewProjection, cb.MainViewProjectionMatrix);
cb.MainScreenSize = RenderContext.View.MainScreenSize;
cb.ViewPos = RenderContext.View.Position;
cb.ViewFar = RenderContext.View.Far;
cb.ViewDir = RenderContext.View.Direction;
Matrix::Transpose(view.Frustum.GetMatrix(), cb.ViewProjectionMatrix);
Matrix::Transpose(view.View, cb.ViewMatrix);
Matrix::Transpose(view.PrevViewProjection, cb.PrevViewProjectionMatrix);
Matrix::Transpose(view.MainViewProjection, cb.MainViewProjectionMatrix);
cb.MainScreenSize = view.MainScreenSize;
cb.ViewPos = view.Position;
cb.ViewFar = view.Far;
cb.ViewDir = view.Direction;
cb.TimeParam = TimeParam;
cb.ViewInfo = RenderContext.View.ViewInfo;
cb.ScreenSize = RenderContext.View.ScreenSize;
cb.TemporalAAJitter = RenderContext.View.TemporalAAJitter;
cb.ViewInfo = view.ViewInfo;
cb.ScreenSize = view.ScreenSize;
cb.TemporalAAJitter = view.TemporalAAJitter;
// Update constants
GPUContext->UpdateCB(PerViewConstants, &cb);