Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- -----------------------------------------------------------------------------
- Filename: Shader.cpp
- -----------------------------------------------------------------------------
- -----------------------------------------------------------------------------
- */
- // Declare Once
- #pragma once
- // Includes
- #include "Shader.hpp"
- #include "Window.hpp"
- // Namespace ------------------------------------------------------------------------------
- namespace Little
- {
- // Shader Buffer -------------------------------------------------------------------
- bool Shader::Buffer::Create(UInt size)
- {
- if(mBuffer) { return false; }
- D3D11_BUFFER_DESC bufferDesc;
- ZeroMemory(&bufferDesc, sizeof(bufferDesc));
- bufferDesc.Usage = D3D11_USAGE_DEFAULT;
- bufferDesc.ByteWidth = size;
- bufferDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
- //bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
- bufferDesc.MiscFlags = 0;
- bufferDesc.StructureByteStride = 0;
- return !FAILED(Handle::Device->CreateBuffer(&bufferDesc, NULL, &mBuffer));
- };
- //--//
- void Shader::Buffer::Update(Pointer data)
- {
- Handle::DeviceContext->UpdateSubresource(mBuffer, 0, NULL, data, 0, 0);
- };
- //--//
- void Shader::Buffer::Release()
- {
- if(mBuffer) { mBuffer->Release(); mBuffer = 0; }
- };
- // Vertex Shader ------------------------------------------------------------------
- bool Shader::Vertex::Create(Pointer data, UInt size)
- {
- return mShader ? false : !FAILED(Handle::Device->CreateVertexShader(data, size, NULL, &mShader));
- };
- //--//
- void Shader::Vertex::SetBuffer(Shader::Buffer buffer, UInt slot)
- {
- Handle::DeviceContext->VSSetConstantBuffers(slot, 1, &buffer.mBuffer);
- };
- //--//
- void Shader::Vertex::Bind()
- {
- Handle::DeviceContext->VSSetShader(mShader, NULL, 0);
- };
- //--//
- void Shader::Vertex::Release()
- {
- if(mShader) { mShader->Release(); mShader = 0; }
- };
- // Pixel Shader ------------------------------------------------------------------
- bool Shader::Pixel::Create(Pointer data, UInt size)
- {
- return mShader ? false : !FAILED(Handle::Device->CreatePixelShader(data, size, NULL, &mShader));
- };
- //--//
- void Shader::Pixel::SetBuffer(Shader::Buffer buffer, UInt slot)
- {
- Handle::DeviceContext->PSSetConstantBuffers(slot, 1, &buffer.mBuffer);
- };
- //--//
- void Shader::Pixel::Bind()
- {
- Handle::DeviceContext->PSSetShader(mShader, NULL, 0);
- };
- //--//
- void Shader::Pixel::Release()
- {
- if(mShader) { mShader->Release(); mShader = 0; }
- };
- // Geometry Shader ------------------------------------------------------------------
- bool Shader::Geometry::Create(Pointer data, UInt size)
- {
- return mShader ? false : !FAILED(Handle::Device->CreateGeometryShader(data, size, NULL, &mShader));
- };
- //--//
- void Shader::Geometry::SetBuffer(Shader::Buffer buffer, UInt slot)
- {
- Handle::DeviceContext->GSSetConstantBuffers(slot, 1, &buffer.mBuffer);
- };
- //--//
- void Shader::Geometry::Bind()
- {
- Handle::DeviceContext->GSSetShader(mShader, NULL, 0);
- };
- //--//
- void Shader::Geometry::Release()
- {
- if(mShader) { mShader->Release(); mShader = 0; }
- };
- // Hull Shader ------------------------------------------------------------------
- bool Shader::Hull::Create(Pointer data, UInt size)
- {
- return mShader ? false : !FAILED(Handle::Device->CreateHullShader(data, size, NULL, &mShader));
- };
- //--//
- void Shader::Hull::SetBuffer(Shader::Buffer buffer, UInt slot)
- {
- Handle::DeviceContext->HSSetConstantBuffers(slot, 1, &buffer.mBuffer);
- };
- //--//
- void Shader::Hull::Bind()
- {
- Handle::DeviceContext->HSSetShader(mShader, NULL, 0);
- };
- //--//
- void Shader::Hull::Release()
- {
- if(mShader) { mShader->Release(); mShader = 0; }
- };
- // Domain Shader ------------------------------------------------------------------
- bool Shader::Domain::Create(Pointer data, UInt size)
- {
- return mShader ? false : !FAILED(Handle::Device->CreateDomainShader(data, size, NULL, &mShader));
- };
- //--//
- void Shader::Domain::SetBuffer(Shader::Buffer buffer, UInt slot)
- {
- Handle::DeviceContext->DSSetConstantBuffers(slot, 1, &buffer.mBuffer);
- };
- //--//
- void Shader::Domain::Bind()
- {
- Handle::DeviceContext->DSSetShader(mShader, NULL, 0);
- };
- //--//
- void Shader::Domain::Release()
- {
- if(mShader) { mShader->Release(); mShader = 0; }
- };
- // Compute Shader ------------------------------------------------------------------
- bool Shader::Compute::Create(Pointer data, UInt size)
- {
- return mShader ? false : !FAILED(Handle::Device->CreateComputeShader(data, size, NULL, &mShader));
- };
- //--//
- void Shader::Compute::SetBuffer(Shader::Buffer buffer, UInt slot)
- {
- Handle::DeviceContext->CSSetConstantBuffers(slot, 1, &buffer.mBuffer);
- };
- //--//
- void Shader::Compute::Bind()
- {
- Handle::DeviceContext->CSSetShader(mShader, NULL, 0);
- };
- //--//
- void Shader::Compute::Release()
- {
- if(mShader) { mShader->Release(); mShader = 0; }
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment