Irányfény fancy shaderrel
This commit is contained in:
parent
b1cba59ea8
commit
cc27d73ade
@ -284,7 +284,7 @@ namespace eg3d {
|
||||
mCommandList->RSSetViewports(1, &mViewPort);
|
||||
mCommandList->RSSetScissorRects(1, &mScissorRect);
|
||||
|
||||
mCommandList->ClearRenderTargetView(getCurrentBackBufferRTVHandle(), DirectX::Colors::LightSteelBlue, 0, nullptr);
|
||||
mCommandList->ClearRenderTargetView(getCurrentBackBufferRTVHandle(), DirectX::Colors::Black, 0, nullptr);
|
||||
mCommandList->ClearDepthStencilView(getDSVHandle(), D3D12_CLEAR_FLAG_DEPTH | D3D12_CLEAR_FLAG_STENCIL, 1.0f, 0, 0, nullptr);
|
||||
|
||||
mCommandList->OMSetRenderTargets(1, &getCurrentBackBufferRTVHandle(), true, &getDSVHandle());
|
||||
@ -376,11 +376,14 @@ namespace eg3d {
|
||||
|
||||
void DXWindow::updateConstantBuffers()
|
||||
{
|
||||
DirectX::XMStoreFloat4x4(&constantBuffer.transformMatrix, XMMatrixTranspose(XMMatrixRotationX(-XM_PIDIV2)));
|
||||
//DirectX::XMStoreFloat4x4(&constantBuffer.transformMatrix, XMMatrixTranspose(XMMatrixRotationX(-XM_PIDIV2)));
|
||||
|
||||
if (pCam != nullptr) {
|
||||
constantBuffer.viewMatrix = pCam->getViewMatrix();
|
||||
constantBuffer.projMatrix = pCam->getProjMatrix();
|
||||
|
||||
XMFLOAT3 camPos = pCam->getViewParams().position;
|
||||
constantBuffer.camPosition = { camPos.x, camPos.y, camPos.z, 0.0 };
|
||||
}
|
||||
|
||||
bufferMapCopy(cbResource, static_cast<void *>(&constantBuffer), sizeof(constantBuffer));
|
||||
|
@ -8,6 +8,7 @@ struct VSOutput // vertex shader kimeneti strukt
|
||||
{
|
||||
float4 position_H : SV_Position;
|
||||
float3 color : COLOR;
|
||||
float3 worldPosition : WORLDPOS;
|
||||
};
|
||||
|
||||
cbuffer CFrame : register(b0)
|
||||
@ -15,6 +16,7 @@ cbuffer CFrame : register(b0)
|
||||
float4x4 transformMatrix;
|
||||
float4x4 viewMatrix;
|
||||
float4x4 projMatrix;
|
||||
float4 camPosition;
|
||||
};
|
||||
cbuffer CEntity : register(b1)
|
||||
{
|
||||
@ -26,10 +28,18 @@ VSOutput vs_main(VSInput input)
|
||||
{
|
||||
VSOutput output; // vertex shader kimenete
|
||||
|
||||
output.position_H = mul(float4(input.position_D, 1.0), mul(worldMatrix, mul(viewMatrix, projMatrix)));
|
||||
output.color = color;
|
||||
float4 worldCoords = mul(float4(input.position_D, 1.0), worldMatrix);
|
||||
output.position_H = mul(worldCoords, mul(viewMatrix, projMatrix));
|
||||
|
||||
// TODO fények
|
||||
float3 L = normalize(float3(1.0, 1.0, 0.5));
|
||||
float3 I = float3(1.0, 1.0, 0.8);
|
||||
float3 md = float3(1.0, 0.1, 0.1);
|
||||
|
||||
//float3 p = float3(1440, 370, -1365);
|
||||
output.color = (I * color.xyz) * max(dot(input.normal, L), 0);
|
||||
|
||||
output.worldPosition = worldCoords;
|
||||
|
||||
return output;
|
||||
}
|
||||
@ -44,7 +54,8 @@ PSOutput ps_main(VSOutput input)
|
||||
PSOutput output;
|
||||
|
||||
//output.color = float4(0.0f, 1.0f, 0.0f, 1.0f);
|
||||
output.color = float4(input.color, 1.0f);
|
||||
output.color = float4(input.color, 1.0f) / length(input.worldPosition -
|
||||
camPosition.xyz) * 200;
|
||||
|
||||
return output;
|
||||
}
|
||||
|
@ -4,4 +4,5 @@ SET PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\V
|
||||
fxc "basic_shader.hlsl" /Od /Zi /T vs_5_0 /E "vs_main" /Fo "vs.cso"
|
||||
fxc "basic_shader.hlsl" /Od /Zi /T ps_5_0 /E "ps_main" /Fo "ps.cso"
|
||||
|
||||
|
||||
::PAUSE
|
@ -14,6 +14,7 @@ struct CB_Frame
|
||||
DirectX::XMFLOAT4X4 transformMatrix;
|
||||
DirectX::XMFLOAT4X4 viewMatrix; // nézet-mátrix
|
||||
DirectX::XMFLOAT4X4 projMatrix; // vetítési mátrix
|
||||
DirectX::XMFLOAT4 camPosition; // kamerapozíció
|
||||
};
|
||||
|
||||
struct CB_Entity {
|
||||
|
Loading…
x
Reference in New Issue
Block a user