| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | #include "renderParamsD3D.h" |
| |
|
| | void RenderParamsUtilD3D::calcShadowParams(Vec3 lightPos, Vec3 lightTarget, Matrix44 lightTransform, float shadowBias, ShadowParamsD3D* paramsOut) |
| | { |
| | paramsOut->lightTransform = (DirectX::XMMATRIX&)(convertGLToD3DProjection(lightTransform)); |
| | paramsOut->lightPos = (float3&)lightPos; |
| | paramsOut->lightDir = (float3&)Normalize(lightTarget - lightPos); |
| | paramsOut->bias = shadowBias; |
| |
|
| | const Vec4 taps[] = |
| | { |
| | Vec2(-0.326212f,-0.40581f), Vec2(-0.840144f,-0.07358f), |
| | Vec2(-0.695914f,0.457137f), Vec2(-0.203345f,0.620716f), |
| | Vec2(0.96234f,-0.194983f), Vec2(0.473434f,-0.480026f), |
| | Vec2(0.519456f,0.767022f), Vec2(0.185461f,-0.893124f), |
| | Vec2(0.507431f,0.064425f), Vec2(0.89642f,0.412458f), |
| | Vec2(-0.32194f,-0.932615f), Vec2(-0.791559f,-0.59771f) |
| | }; |
| | memcpy(paramsOut->shadowTaps, taps, sizeof(taps)); |
| | } |
| |
|
| | Matrix44 RenderParamsUtilD3D::convertGLToD3DProjection(const Matrix44& proj) |
| | { |
| | Matrix44 scale = Matrix44::kIdentity; |
| | scale.columns[2][2] = 0.5f; |
| |
|
| | Matrix44 bias = Matrix44::kIdentity; |
| | bias.columns[3][2] = 1.0f; |
| |
|
| | return scale*bias*proj; |
| | } |
| |
|
| | void RenderParamsUtilD3D::calcMeshConstantBuffer(const MeshDrawParamsD3D& params, Hlsl::MeshShaderConst& constBuf) |
| | { |
| | constBuf.modelViewProjection = (float4x4&)(XMMatrixMultiply(XMMatrixMultiply(params.model, params.view), params.projection)); |
| |
|
| | constBuf.modelView = (float4x4&)XMMatrixMultiply(params.model, params.view); |
| |
|
| | constBuf.objectTransform = (float4x4&)params.objectTransform; |
| | constBuf.lightTransform = (float4x4&)params.lightTransform; |
| |
|
| | constBuf.clipPlane = params.clipPlane; |
| | constBuf.fogColor = params.fogColor; |
| | constBuf.color = params.color; |
| | constBuf.secondaryColor = params.secondaryColor; |
| |
|
| | constBuf.lightPos = params.lightPos; |
| | constBuf.lightDir = params.lightDir; |
| |
|
| | constBuf.bias = params.bias; |
| | constBuf.expand = params.expand; |
| | constBuf.spotMin = params.spotMin; |
| | constBuf.spotMax = params.spotMax; |
| |
|
| | constBuf.grid = params.grid; |
| | constBuf.tex = params.tex; |
| | constBuf.colorArray = params.colorArray; |
| |
|
| | memcpy(constBuf.shadowTaps, params.shadowTaps, sizeof(constBuf.shadowTaps)); |
| | } |
| |
|
| | void RenderParamsUtilD3D::calcFluidConstantBuffer(const FluidDrawParamsD3D& params, Hlsl::FluidShaderConst& constBuf) |
| | { |
| | constBuf.modelViewProjection = (Hlsl::float4x4&)(XMMatrixMultiply(XMMatrixMultiply(params.model, params.view), params.projection)); |
| | constBuf.modelView = (Hlsl::float4x4&)XMMatrixMultiply(params.model, params.view); |
| | constBuf.projection = (Hlsl::float4x4&)params.projection; |
| | constBuf.inverseModelView = (Hlsl::float4x4&)XMMatrixInverse(nullptr, XMMatrixMultiply(params.model, params.view)); |
| | constBuf.inverseProjection = (Hlsl::float4x4&)XMMatrixInverse(nullptr, params.projection); |
| |
|
| | |
| | |
| | constBuf.invViewport = params.invViewport; |
| |
|
| | constBuf.blurRadiusWorld = params.blurRadiusWorld; |
| | constBuf.blurScale = params.blurScale; |
| | constBuf.blurFalloff = params.blurFalloff; |
| | constBuf.debug = params.debug; |
| |
|
| | constBuf.pointRadius = params.pointRadius; |
| | } |
| |
|
| | void RenderParamsUtilD3D::calcDiffuseConstantBuffer(const DiffuseDrawParamsD3D& params, Hlsl::DiffuseShaderConst& constBuf) |
| | { |
| | using namespace DirectX; |
| |
|
| | XMMATRIX modelViewProj = XMMatrixMultiply(XMMatrixMultiply(params.model, params.view), params.projection); |
| | constBuf.modelViewProjection = (Hlsl::float4x4&)modelViewProj; |
| | XMMATRIX modelView = XMMatrixMultiply(params.model, params.view); |
| | constBuf.modelView = (Hlsl::float4x4&)modelView; |
| | constBuf.projection = (Hlsl::float4x4&)params.projection; |
| |
|
| | constBuf.motionBlurScale = params.motionScale; |
| | constBuf.diffuseRadius = params.diffuseRadius; |
| | constBuf.diffuseScale = params.diffuseScale; |
| | constBuf.spotMin = params.spotMin; |
| | constBuf.spotMax = params.spotMax; |
| |
|
| | constBuf.lightTransform = (Hlsl::float4x4&)params.lightTransform; |
| | constBuf.lightPos = params.lightPos; |
| | constBuf.lightDir = params.lightDir; |
| | constBuf.color = params.color; |
| |
|
| | memcpy(constBuf.shadowTaps, params.shadowTaps, sizeof(constBuf.shadowTaps)); |
| | } |
| |
|
| | void RenderParamsUtilD3D::calcFluidCompositeConstantBuffer(const FluidDrawParamsD3D& params, Hlsl::FluidShaderConst& constBuf) |
| | { |
| | constBuf.modelViewProjection = (Hlsl::float4x4&)(XMMatrixMultiply(XMMatrixMultiply(params.model, params.view), params.projection)); |
| | constBuf.modelView = (Hlsl::float4x4&)XMMatrixMultiply(params.model, params.view); |
| | constBuf.projection = (Hlsl::float4x4&)params.projection; |
| | constBuf.inverseModelView = (Hlsl::float4x4&)XMMatrixInverse(nullptr, XMMatrixMultiply(params.model, params.view)); |
| | constBuf.inverseProjection = (Hlsl::float4x4&)XMMatrixInverse(nullptr, params.projection); |
| |
|
| | constBuf.lightTransform = (Hlsl::float4x4&)params.lightTransform; |
| |
|
| | constBuf.invTexScale = params.invTexScale; |
| |
|
| | |
| | |
| |
|
| | constBuf.blurRadiusWorld = params.blurRadiusWorld; |
| | constBuf.blurScale = params.blurScale; |
| | constBuf.blurFalloff = params.blurFalloff; |
| | constBuf.debug = params.debug; |
| |
|
| | constBuf.clipPosToEye = params.clipPosToEye; |
| | constBuf.color = params.color; |
| | constBuf.ior = params.ior; |
| | constBuf.spotMin = params.spotMin; |
| | constBuf.spotMax = params.spotMax; |
| |
|
| | constBuf.lightPos = params.lightPos; |
| | constBuf.lightDir = params.lightDir; |
| |
|
| | typedef DirectX::XMFLOAT2 float2; |
| | const float2 taps[] = |
| | { |
| | float2(-0.326212f,-0.40581f), float2(-0.840144f,-0.07358f), |
| | float2(-0.695914f,0.457137f), float2(-0.203345f,0.620716f), |
| | float2(0.96234f,-0.194983f), float2(0.473434f,-0.480026f), |
| | float2(0.519456f,0.767022f), float2(0.185461f,-0.893124f), |
| | float2(0.507431f,0.064425f), float2(0.89642f,0.412458f), |
| | float2(-0.32194f,-0.932615f), float2(-0.791559f,-0.59771f) |
| | }; |
| | memcpy(constBuf.shadowTaps, taps, sizeof(taps)); |
| | } |
| |
|
| | void RenderParamsUtilD3D::calcPointConstantBuffer(const PointDrawParamsD3D& params, Hlsl::PointShaderConst& constBuf) |
| | { |
| | using namespace DirectX; |
| |
|
| | constBuf.modelView = (float4x4&)XMMatrixMultiply(params.model, params.view); |
| | constBuf.projection = (float4x4&)params.projection; |
| |
|
| | constBuf.pointRadius = params.pointRadius; |
| | constBuf.pointScale = params.pointScale; |
| | constBuf.spotMin = params.spotMin; |
| | constBuf.spotMax = params.spotMax; |
| |
|
| | constBuf.lightTransform = (float4x4&)params.lightTransform; |
| | constBuf.lightPos = params.lightPos; |
| | constBuf.lightDir = params.lightDir; |
| |
|
| | for (int i = 0; i < 8; i++) |
| | constBuf.colors[i] = params.colors[i]; |
| |
|
| | memcpy(constBuf.shadowTaps, params.shadowTaps, sizeof(constBuf.shadowTaps)); |
| |
|
| | constBuf.mode = params.mode; |
| | } |