Graphics API decouple part5

This commit is contained in:
turanszkij
2016-03-20 14:29:50 +01:00
parent 3915cec8c7
commit 60e2f63e18
42 changed files with 1546 additions and 1094 deletions
+5 -3
View File
@@ -7,6 +7,8 @@
#include "wiSprite.h"
#include "TextureMapping.h"
using namespace wiGraphicsTypes;
DeferredRenderableComponent::DeferredRenderableComponent(){
Renderable3DComponent::setProperties();
@@ -24,15 +26,15 @@ void DeferredRenderableComponent::Initialize()
rtGBuffer.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, 3, true, 1, 0
, DXGI_FORMAT_R16G16B16A16_FLOAT
, FORMAT_R16G16B16A16_FLOAT
);
rtDeferred.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, 1, false, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT, 0);
, 1, false, 1, 0, FORMAT_R16G16B16A16_FLOAT, 0);
rtLight.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, 1, false, 1, 0
, DXGI_FORMAT_R11G11B10_FLOAT
, FORMAT_R11G11B10_FLOAT
);
Renderable2DComponent::Initialize();
@@ -4,6 +4,8 @@
#include "wiImageEffects.h"
#include "wiHelper.h"
using namespace wiGraphicsTypes;
ForwardRenderableComponent::ForwardRenderableComponent(){
Renderable3DComponent::setProperties();
+2
View File
@@ -4,6 +4,8 @@
#include "wiFont.h"
#include "wiRenderer.h"
using namespace wiGraphicsTypes;
Renderable2DComponent::Renderable2DComponent()
{
setSpriteSpeed(1.f);
+14 -12
View File
@@ -7,6 +7,8 @@
#include "wiLoader.h"
#include "TextureMapping.h"
using namespace wiGraphicsTypes;
Renderable3DComponent::Renderable3DComponent()
{
_needToUpdateRenderData.store(true);
@@ -64,30 +66,30 @@ void Renderable3DComponent::Initialize()
rtSSR.Initialize(
(UINT)(wiRenderer::GetDevice()->GetScreenWidth()), (UINT)(wiRenderer::GetDevice()->GetScreenHeight())
, 1, false, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT);
, 1, false, 1, 0, FORMAT_R16G16B16A16_FLOAT);
rtMotionBlur.Initialize(
(UINT)(wiRenderer::GetDevice()->GetScreenWidth()), (UINT)(wiRenderer::GetDevice()->GetScreenHeight())
, 1, false, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT);
, 1, false, 1, 0, FORMAT_R16G16B16A16_FLOAT);
rtLinearDepth.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, 1, false, 1, 0, DXGI_FORMAT_R32_FLOAT
, 1, false, 1, 0, FORMAT_R32_FLOAT
);
rtParticle.Initialize(
(UINT)(wiRenderer::GetDevice()->GetScreenWidth()*getAlphaParticleDownSample()), (UINT)(wiRenderer::GetDevice()->GetScreenHeight()*getAlphaParticleDownSample())
, 1, false, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT
, 1, false, 1, 0, FORMAT_R16G16B16A16_FLOAT
);
rtParticleAdditive.Initialize(
(UINT)(wiRenderer::GetDevice()->GetScreenWidth()*getAdditiveParticleDownSample()), (UINT)(wiRenderer::GetDevice()->GetScreenHeight()*getAdditiveParticleDownSample())
, 1, false, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT
, 1, false, 1, 0, FORMAT_R16G16B16A16_FLOAT
);
rtWaterRipple.Initialize(
wiRenderer::GetDevice()->GetScreenWidth()
, wiRenderer::GetDevice()->GetScreenHeight()
, 1, false, 1, 0, DXGI_FORMAT_R8G8B8A8_SNORM
, 1, false, 1, 0, FORMAT_R8G8B8A8_SNORM
);
rtTransparent.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, 1, false, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT
, 1, false, 1, 0, FORMAT_R16G16B16A16_FLOAT
);
rtVolumeLight.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
@@ -96,11 +98,11 @@ void Renderable3DComponent::Initialize()
rtReflection.Initialize(
(UINT)(wiRenderer::GetDevice()->GetScreenWidth() * getReflectionQuality())
, (UINT)(wiRenderer::GetDevice()->GetScreenHeight() * getReflectionQuality())
, 1, true, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT
, 1, true, 1, 0, FORMAT_R16G16B16A16_FLOAT
);
rtFinal[0].Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, 1, false, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT);
, 1, false, 1, 0, FORMAT_R16G16B16A16_FLOAT);
rtFinal[1].Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, 1, false);
@@ -123,13 +125,13 @@ void Renderable3DComponent::Initialize()
for (unsigned int i = 0; i<rtSSAO.size(); i++)
rtSSAO[i].Initialize(
(UINT)(wiRenderer::GetDevice()->GetScreenWidth()*getSSAOQuality()), (UINT)(wiRenderer::GetDevice()->GetScreenHeight()*getSSAOQuality())
, 1, false, 1, 0, DXGI_FORMAT_R8_UNORM
, 1, false, 1, 0, FORMAT_R8_UNORM
);
rtSSS.resize(3);
for (int i = 0; i < 3; ++i)
rtSSS[i].Initialize(
(UINT)(wiRenderer::GetDevice()->GetScreenWidth()), (UINT)(wiRenderer::GetDevice()->GetScreenHeight())
, 1, false, 1, 0, DXGI_FORMAT_R16G16B16A16_FLOAT);
, 1, false, 1, 0, FORMAT_R16G16B16A16_FLOAT);
rtSun.resize(2);
@@ -149,7 +151,7 @@ void Renderable3DComponent::Initialize()
rtBloom[0].Initialize(
wiRenderer::GetDevice()->GetScreenWidth()
, wiRenderer::GetDevice()->GetScreenHeight()
, 1, false, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0
, 1, false, 1, 0, FORMAT_R8G8B8A8_UNORM, 0
);
for (unsigned int i = 1; i<rtBloom.size(); ++i)
rtBloom[i].Initialize(
+2
View File
@@ -1,5 +1,7 @@
#include "Texture_BindLua.h"
using namespace wiGraphicsTypes;
const char Texture_BindLua::className[] = "Texture";
Luna<Texture_BindLua>::FunctionType Texture_BindLua::methods[] = {
+2 -2
View File
@@ -6,13 +6,13 @@
class Texture_BindLua
{
public:
Texture2D* texture;
wiGraphicsTypes::Texture2D* texture;
static const char className[];
static Luna<Texture_BindLua>::FunctionType methods[];
static Luna<Texture_BindLua>::PropertyType properties[];
Texture_BindLua(Texture2D* texture = nullptr);
Texture_BindLua(wiGraphicsTypes::Texture2D* texture = nullptr);
Texture_BindLua(lua_State *L);
~Texture_BindLua();
+2
View File
@@ -5,6 +5,8 @@
#include "wiRenderer.h"
#include "wiTextureHelper.h"
using namespace wiGraphicsTypes;
deque<string> wiBackLog::stream;
deque<string> wiBackLog::history;
mutex wiBackLog::logMutex;
+2 -2
View File
@@ -45,9 +45,9 @@ public:
static bool isActive(){return state==IDLE;}
static void setBackground(Texture2D* texture);
static void setBackground(wiGraphicsTypes::Texture2D* texture);
static Texture2D* backgroundTex;
static wiGraphicsTypes::Texture2D* backgroundTex;
static wiFont font;
};
+2
View File
@@ -1,6 +1,8 @@
#include "wiCube.h"
#include "wiRenderer.h"
using namespace wiGraphicsTypes;
BufferResource Cube::vertexBuffer;
BufferResource Cube::indexBuffer;
+2 -2
View File
@@ -41,8 +41,8 @@ public:
Description desc;
static BufferResource vertexBuffer;
static BufferResource indexBuffer;
static wiGraphicsTypes::BufferResource vertexBuffer;
static wiGraphicsTypes::BufferResource indexBuffer;
static void LoadStatic();
static void CleanUpStatic();
+3 -64
View File
@@ -1,12 +1,10 @@
#include "wiDepthTarget.h"
#include "wiRenderer.h"
using namespace wiGraphicsTypes;
wiDepthTarget::wiDepthTarget()
{
//texture2D = NULL;
//depthTarget = NULL;
//shaderResource = NULL;
texture = nullptr;
textureCube = nullptr;
isCube = false;
@@ -34,7 +32,7 @@ void wiDepthTarget::Initialize(int width, int height, UINT MSAAC, UINT MSAAQ)
depthBufferDesc.Height = height;
depthBufferDesc.MipLevels = 1;
depthBufferDesc.ArraySize = 1;
depthBufferDesc.Format = DXGI_FORMAT_R24G8_TYPELESS;
depthBufferDesc.Format = FORMAT_R24G8_TYPELESS;
depthBufferDesc.SampleDesc.Count = MSAAC;
depthBufferDesc.SampleDesc.Quality = MSAAQ;
depthBufferDesc.Usage = USAGE_DEFAULT;
@@ -43,31 +41,6 @@ void wiDepthTarget::Initialize(int width, int height, UINT MSAAC, UINT MSAAQ)
depthBufferDesc.MiscFlags = 0;
wiRenderer::GetDevice()->CreateTexture2D(&depthBufferDesc, nullptr, &texture);
//HRESULT hr;
//// Create the texture for the depth buffer using the filled out description.
//hr=wiRenderer::GetDevice()->CreateTexture2D(&depthBufferDesc, nullptr, &texture2D);
//DepthStencilViewDesc depthStencilViewDesc;
//ZeroMemory(&depthStencilViewDesc, sizeof(depthStencilViewDesc));
//depthStencilViewDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
//depthStencilViewDesc.ViewDimension = (MSAAQ==0 ? RESOURCE_DIMENSION_TEXTURE2D : RESOURCE_DIMENSION_TEXTURE2DMS);
////depthStencilViewDesc.Texture2D.MipSlice = 0;
//depthStencilViewDesc.Flags = 0;
//// Create the depth stencil view.
//hr=wiRenderer::GetDevice()->CreateDepthStencilView(texture2D, &depthStencilViewDesc, &depthTarget);
////Create Depth ShaderResource
////ShaderResourceViewDesc shaderResourceViewDesc;
//ZeroMemory(&shaderResourceViewDesc, sizeof(shaderResourceViewDesc));
//shaderResourceViewDesc.Format = DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
//shaderResourceViewDesc.ViewDimension = (MSAAQ==0 ? RESOURCE_DIMENSION_TEXTURE2D : RESOURCE_DIMENSION_TEXTURE2DMS);
////shaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
////shaderResourceViewDesc.Texture2D.MipLevels = 1;
//shaderResourceViewDesc.mipLevels = 1;
//wiRenderer::GetDevice()->CreateShaderResourceView(texture2D, &shaderResourceViewDesc, &shaderResource);
}
void wiDepthTarget::InitializeCube(int size)
{
@@ -84,7 +57,7 @@ void wiDepthTarget::InitializeCube(int size)
depthBufferDesc.Height = size;
depthBufferDesc.MipLevels = 1;
depthBufferDesc.ArraySize = 6;
depthBufferDesc.Format = DXGI_FORMAT_R32_TYPELESS;
depthBufferDesc.Format = FORMAT_R32_TYPELESS;
depthBufferDesc.SampleDesc.Count = 1;
depthBufferDesc.SampleDesc.Quality = 0;
depthBufferDesc.Usage = USAGE_DEFAULT;
@@ -93,34 +66,6 @@ void wiDepthTarget::InitializeCube(int size)
depthBufferDesc.MiscFlags = RESOURCE_MISC_TEXTURECUBE;
wiRenderer::GetDevice()->CreateTextureCube(&depthBufferDesc, nullptr, &textureCube);
//HRESULT hr;
//// Create the texture for the depth buffer using the filled out description.
//hr=wiRenderer::GetDevice()->CreateTexture2D(&depthBufferDesc, NULL, &texture2D);
//DepthStencilViewDesc depthStencilViewDesc;
//ZeroMemory(&depthStencilViewDesc, sizeof(depthStencilViewDesc));
//depthStencilViewDesc.Format = DXGI_FORMAT_D32_FLOAT;
//depthStencilViewDesc.ViewDimension = RESOURCE_DIMENSION_TEXTURE2DARRAY;
//// depthStencilViewDesc.Texture2DArray.FirstArraySlice = 0;
////depthStencilViewDesc.Texture2DArray.ArraySize = 6;
//// depthStencilViewDesc.Texture2DArray.MipSlice = 0;
//depthStencilViewDesc.ArraySize = 6;
//depthStencilViewDesc.Flags = 0;
//// Create the depth stencil view.
//hr=wiRenderer::GetDevice()->CreateDepthStencilView(texture2D, &depthStencilViewDesc, &depthTarget);
////Create Depth ShaderResource
////ShaderResourceViewDesc shaderResourceViewDesc;
//ZeroMemory(&shaderResourceViewDesc, sizeof(shaderResourceViewDesc));
//shaderResourceViewDesc.Format = DXGI_FORMAT_R32_FLOAT;
//shaderResourceViewDesc.ViewDimension = RESOURCE_DIMENSION_TEXTURECUBE;
////shaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
////shaderResourceViewDesc.Texture2D.MipLevels = 1;
//shaderResourceViewDesc.mipLevels = 1;
//wiRenderer::GetDevice()->CreateShaderResourceView(texture2D, &shaderResourceViewDesc, &shaderResource);
}
void wiDepthTarget::Clear(GRAPHICSTHREAD threadID)
@@ -129,12 +74,6 @@ void wiDepthTarget::Clear(GRAPHICSTHREAD threadID)
}
void wiDepthTarget::CopyFrom(const wiDepthTarget& from, GRAPHICSTHREAD threadID)
{
//if(shaderResource) shaderResource->Release();
////static ShaderResourceViewDesc desc;
////from.shaderResource->GetDesc(&desc);
//wiRenderer::GetDevice()->CopyResource(texture2D,from.texture2D);
//HRESULT r = wiRenderer::GetDevice()->CreateShaderResourceView(texture2D,&from.shaderResourceViewDesc,&shaderResource);
wiRenderer::GetDevice()->CopyTexture2D(GetTexture(), from.GetTexture(), threadID);
}
+4 -4
View File
@@ -5,8 +5,8 @@
class wiDepthTarget
{
private:
Texture2D* texture;
TextureCube* textureCube;
wiGraphicsTypes::Texture2D* texture;
wiGraphicsTypes::TextureCube* textureCube;
bool isCube;
public:
//Texture2D texture2D;
@@ -24,7 +24,7 @@ public:
void Clear(GRAPHICSTHREAD threadID);
void CopyFrom(const wiDepthTarget&, GRAPHICSTHREAD threadID);
Texture2D* GetTexture() const { return(isCube ? textureCube : texture); }
Texture2DDesc GetDesc() const { return GetTexture()->desc; }
wiGraphicsTypes::Texture2D* GetTexture() const { return(isCube ? textureCube : texture); }
wiGraphicsTypes::Texture2DDesc GetDesc() const { return GetTexture()->desc; }
};
+7 -5
View File
@@ -7,6 +7,8 @@
#include "wiRandom.h"
#include "TextureMapping.h"
using namespace wiGraphicsTypes;
//ID3D11Buffer *wiEmittedParticle::vertexBuffer;
VertexLayout wiEmittedParticle::vertexLayout;
VertexShader wiEmittedParticle::vertexShader;
@@ -306,11 +308,11 @@ void wiEmittedParticle::LoadShaders()
{
VertexLayoutDesc layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
//{ "TEXCOORD", 2, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "ROTATION", 0, DXGI_FORMAT_R32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "VELOCITY", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "POSITION", 0, FORMAT_R32G32B32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
//{ "TEXCOORD", 2, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "ROTATION", 0, FORMAT_R32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "VELOCITY", 0, FORMAT_R32G32B32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = ARRAYSIZE(layout);
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "pointspriteVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
+9 -9
View File
@@ -49,15 +49,15 @@ private:
ALIGN_16
};
BufferResource vertexBuffer;
static VertexLayout vertexLayout;
static VertexShader vertexShader;
static PixelShader pixelShader,simplestPS;
static GeometryShader geometryShader;
static BufferResource constantBuffer;
static BlendState blendStateAlpha,blendStateAdd;
static RasterizerState rasterizerState,wireFrameRS;
static DepthStencilState depthStencilState;
wiGraphicsTypes::BufferResource vertexBuffer;
static wiGraphicsTypes::VertexLayout vertexLayout;
static wiGraphicsTypes::VertexShader vertexShader;
static wiGraphicsTypes::PixelShader pixelShader,simplestPS;
static wiGraphicsTypes::GeometryShader geometryShader;
static wiGraphicsTypes::BufferResource constantBuffer;
static wiGraphicsTypes::BlendState blendStateAlpha,blendStateAdd;
static wiGraphicsTypes::RasterizerState rasterizerState,wireFrameRS;
static wiGraphicsTypes::DepthStencilState depthStencilState;
public:
static void LoadShaders();
+4 -2
View File
@@ -5,6 +5,8 @@
#include "wiLoader.h"
#include "TextureMapping.h"
using namespace wiGraphicsTypes;
BufferResource wiFont::vertexBuffer,wiFont::indexBuffer;
VertexLayout wiFont::vertexLayout;
@@ -117,8 +119,8 @@ void wiFont::LoadShaders()
VertexLayoutDesc layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "POSITION", 0, FORMAT_R32G32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, FORMAT_R32G32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = ARRAYSIZE(layout);
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "fontVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
+9 -9
View File
@@ -53,15 +53,15 @@ protected:
ALIGN_16
};
static BufferResource vertexBuffer,indexBuffer;
static wiGraphicsTypes::BufferResource vertexBuffer,indexBuffer;
static VertexLayout vertexLayout;
static VertexShader vertexShader;
static PixelShader pixelShader;
static BlendState blendState;
static BufferResource constantBuffer;
static RasterizerState rasterizerState;
static DepthStencilState depthStencilState;
static wiGraphicsTypes::VertexLayout vertexLayout;
static wiGraphicsTypes::VertexShader vertexShader;
static wiGraphicsTypes::PixelShader pixelShader;
static wiGraphicsTypes::BlendState blendState;
static wiGraphicsTypes::BufferResource constantBuffer;
static wiGraphicsTypes::RasterizerState rasterizerState;
static wiGraphicsTypes::DepthStencilState depthStencilState;
static void SetUpStates();
static void SetUpCB();
@@ -76,7 +76,7 @@ private:
struct wiFontStyle{
string name;
Texture2D* texture;
wiGraphicsTypes::Texture2D* texture;
struct LookUp{
int code;
File diff suppressed because it is too large Load Diff
+369 -11
View File
@@ -5,6 +5,9 @@
#include "Utility/WicTextureLoader.h"
#include "Utility/DDSTextureLoader.h"
namespace wiGraphicsTypes
{
#ifndef WINSTORE_SUPPORT
GraphicsDevice_DX11::GraphicsDevice_DX11(HWND window, int screenW, int screenH, bool windowed) : GraphicsDevice()
#else
@@ -603,13 +606,365 @@ inline D3D11_INPUT_CLASSIFICATION _ConvertInputClassification(INPUT_CLASSIFICATI
}
return D3D11_INPUT_PER_VERTEX_DATA;
}
inline DXGI_FORMAT _ConvertFormat(DXGI_FORMAT value)
inline DXGI_FORMAT _ConvertFormat(FORMAT value)
{
return value;
}
inline DXGI_SAMPLE_DESC _ConvertSampleDesc(DXGI_SAMPLE_DESC value)
{
return value;
switch (value)
{
case FORMAT_UNKNOWN:
return DXGI_FORMAT_UNKNOWN;
break;
case FORMAT_R32G32B32A32_TYPELESS:
return DXGI_FORMAT_R32G32B32A32_TYPELESS;
break;
case FORMAT_R32G32B32A32_FLOAT:
return DXGI_FORMAT_R32G32B32A32_FLOAT;
break;
case FORMAT_R32G32B32A32_UINT:
return DXGI_FORMAT_R32G32B32A32_UINT;
break;
case FORMAT_R32G32B32A32_SINT:
return DXGI_FORMAT_R32G32B32A32_SINT;
break;
case FORMAT_R32G32B32_TYPELESS:
return DXGI_FORMAT_R32G32B32_TYPELESS;
break;
case FORMAT_R32G32B32_FLOAT:
return DXGI_FORMAT_R32G32B32_FLOAT;
break;
case FORMAT_R32G32B32_UINT:
return DXGI_FORMAT_R32G32B32_UINT;
break;
case FORMAT_R32G32B32_SINT:
return DXGI_FORMAT_R32G32B32_SINT;
break;
case FORMAT_R16G16B16A16_TYPELESS:
return DXGI_FORMAT_R16G16B16A16_TYPELESS;
break;
case FORMAT_R16G16B16A16_FLOAT:
return DXGI_FORMAT_R16G16B16A16_FLOAT;
break;
case FORMAT_R16G16B16A16_UNORM:
return DXGI_FORMAT_R16G16B16A16_UNORM;
break;
case FORMAT_R16G16B16A16_UINT:
return DXGI_FORMAT_R16G16B16A16_UINT;
break;
case FORMAT_R16G16B16A16_SNORM:
return DXGI_FORMAT_R16G16B16A16_SNORM;
break;
case FORMAT_R16G16B16A16_SINT:
return DXGI_FORMAT_R16G16B16A16_SINT;
break;
case FORMAT_R32G32_TYPELESS:
return DXGI_FORMAT_R32G32_TYPELESS;
break;
case FORMAT_R32G32_FLOAT:
return DXGI_FORMAT_R32G32_FLOAT;
break;
case FORMAT_R32G32_UINT:
return DXGI_FORMAT_R32G32_UINT;
break;
case FORMAT_R32G32_SINT:
return DXGI_FORMAT_R32G32_SINT;
break;
case FORMAT_R32G8X24_TYPELESS:
return DXGI_FORMAT_R32G8X24_TYPELESS;
break;
case FORMAT_D32_FLOAT_S8X24_UINT:
return DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
break;
case FORMAT_R32_FLOAT_X8X24_TYPELESS:
return DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS;
break;
case FORMAT_X32_TYPELESS_G8X24_UINT:
return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT;
break;
case FORMAT_R10G10B10A2_TYPELESS:
return DXGI_FORMAT_R10G10B10A2_TYPELESS;
break;
case FORMAT_R10G10B10A2_UNORM:
return DXGI_FORMAT_R10G10B10A2_UNORM;
break;
case FORMAT_R10G10B10A2_UINT:
return DXGI_FORMAT_R10G10B10A2_UINT;
break;
case FORMAT_R11G11B10_FLOAT:
return DXGI_FORMAT_R11G11B10_FLOAT;
break;
case FORMAT_R8G8B8A8_TYPELESS:
return DXGI_FORMAT_R8G8B8A8_TYPELESS;
break;
case FORMAT_R8G8B8A8_UNORM:
return DXGI_FORMAT_R8G8B8A8_UNORM;
break;
case FORMAT_R8G8B8A8_UNORM_SRGB:
return DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
break;
case FORMAT_R8G8B8A8_UINT:
return DXGI_FORMAT_R8G8B8A8_UINT;
break;
case FORMAT_R8G8B8A8_SNORM:
return DXGI_FORMAT_R8G8B8A8_SNORM;
break;
case FORMAT_R8G8B8A8_SINT:
return DXGI_FORMAT_R8G8B8A8_SINT;
break;
case FORMAT_R16G16_TYPELESS:
return DXGI_FORMAT_R16G16_TYPELESS;
break;
case FORMAT_R16G16_FLOAT:
return DXGI_FORMAT_R16G16_FLOAT;
break;
case FORMAT_R16G16_UNORM:
return DXGI_FORMAT_R16G16_UNORM;
break;
case FORMAT_R16G16_UINT:
return DXGI_FORMAT_R16G16_UINT;
break;
case FORMAT_R16G16_SNORM:
return DXGI_FORMAT_R16G16_SNORM;
break;
case FORMAT_R16G16_SINT:
return DXGI_FORMAT_R16G16_SINT;
break;
case FORMAT_R32_TYPELESS:
return DXGI_FORMAT_R32_TYPELESS;
break;
case FORMAT_D32_FLOAT:
return DXGI_FORMAT_D32_FLOAT;
break;
case FORMAT_R32_FLOAT:
return DXGI_FORMAT_R32_FLOAT;
break;
case FORMAT_R32_UINT:
return DXGI_FORMAT_R32_UINT;
break;
case FORMAT_R32_SINT:
return DXGI_FORMAT_R32_SINT;
break;
case FORMAT_R24G8_TYPELESS:
return DXGI_FORMAT_R24G8_TYPELESS;
break;
case FORMAT_D24_UNORM_S8_UINT:
return DXGI_FORMAT_D24_UNORM_S8_UINT;
break;
case FORMAT_R24_UNORM_X8_TYPELESS:
return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
break;
case FORMAT_X24_TYPELESS_G8_UINT:
return DXGI_FORMAT_X24_TYPELESS_G8_UINT;
break;
case FORMAT_R8G8_TYPELESS:
return DXGI_FORMAT_R8G8_TYPELESS;
break;
case FORMAT_R8G8_UNORM:
return DXGI_FORMAT_R8G8_UNORM;
break;
case FORMAT_R8G8_UINT:
return DXGI_FORMAT_R8G8_UINT;
break;
case FORMAT_R8G8_SNORM:
return DXGI_FORMAT_R8G8_SNORM;
break;
case FORMAT_R8G8_SINT:
return DXGI_FORMAT_R8G8_SINT;
break;
case FORMAT_R16_TYPELESS:
return DXGI_FORMAT_R16_TYPELESS;
break;
case FORMAT_R16_FLOAT:
return DXGI_FORMAT_R16_FLOAT;
break;
case FORMAT_D16_UNORM:
return DXGI_FORMAT_D16_UNORM;
break;
case FORMAT_R16_UNORM:
return DXGI_FORMAT_R16_UNORM;
break;
case FORMAT_R16_UINT:
return DXGI_FORMAT_R16_UINT;
break;
case FORMAT_R16_SNORM:
return DXGI_FORMAT_R16_SNORM;
break;
case FORMAT_R16_SINT:
return DXGI_FORMAT_R16_SINT;
break;
case FORMAT_R8_TYPELESS:
return DXGI_FORMAT_R8_TYPELESS;
break;
case FORMAT_R8_UNORM:
return DXGI_FORMAT_R8_UNORM;
break;
case FORMAT_R8_UINT:
return DXGI_FORMAT_R8_UINT;
break;
case FORMAT_R8_SNORM:
return DXGI_FORMAT_R8_SNORM;
break;
case FORMAT_R8_SINT:
return DXGI_FORMAT_R8_SINT;
break;
case FORMAT_A8_UNORM:
return DXGI_FORMAT_A8_UNORM;
break;
case FORMAT_R1_UNORM:
return DXGI_FORMAT_R1_UNORM;
break;
case FORMAT_R9G9B9E5_SHAREDEXP:
return DXGI_FORMAT_R9G9B9E5_SHAREDEXP;
break;
case FORMAT_R8G8_B8G8_UNORM:
return DXGI_FORMAT_R8G8_B8G8_UNORM;
break;
case FORMAT_G8R8_G8B8_UNORM:
return DXGI_FORMAT_G8R8_G8B8_UNORM;
break;
case FORMAT_BC1_TYPELESS:
return DXGI_FORMAT_BC1_TYPELESS;
break;
case FORMAT_BC1_UNORM:
return DXGI_FORMAT_BC1_UNORM;
break;
case FORMAT_BC1_UNORM_SRGB:
return DXGI_FORMAT_BC1_UNORM_SRGB;
break;
case FORMAT_BC2_TYPELESS:
return DXGI_FORMAT_BC2_TYPELESS;
break;
case FORMAT_BC2_UNORM:
return DXGI_FORMAT_BC2_UNORM;
break;
case FORMAT_BC2_UNORM_SRGB:
return DXGI_FORMAT_BC2_UNORM_SRGB;
break;
case FORMAT_BC3_TYPELESS:
return DXGI_FORMAT_BC3_TYPELESS;
break;
case FORMAT_BC3_UNORM:
return DXGI_FORMAT_BC3_UNORM;
break;
case FORMAT_BC3_UNORM_SRGB:
return DXGI_FORMAT_BC3_UNORM_SRGB;
break;
case FORMAT_BC4_TYPELESS:
return DXGI_FORMAT_BC4_TYPELESS;
break;
case FORMAT_BC4_UNORM:
return DXGI_FORMAT_BC4_UNORM;
break;
case FORMAT_BC4_SNORM:
return DXGI_FORMAT_BC4_SNORM;
break;
case FORMAT_BC5_TYPELESS:
return DXGI_FORMAT_BC5_TYPELESS;
break;
case FORMAT_BC5_UNORM:
return DXGI_FORMAT_BC5_UNORM;
break;
case FORMAT_BC5_SNORM:
return DXGI_FORMAT_BC5_SNORM;
break;
case FORMAT_B5G6R5_UNORM:
return DXGI_FORMAT_B5G6R5_UNORM;
break;
case FORMAT_B5G5R5A1_UNORM:
return DXGI_FORMAT_B5G5R5A1_UNORM;
break;
case FORMAT_B8G8R8A8_UNORM:
return DXGI_FORMAT_B8G8R8A8_UNORM;
break;
case FORMAT_B8G8R8X8_UNORM:
return DXGI_FORMAT_B8G8R8X8_UNORM;
break;
case FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
return DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM;
break;
case FORMAT_B8G8R8A8_TYPELESS:
return DXGI_FORMAT_B8G8R8A8_TYPELESS;
break;
case FORMAT_B8G8R8A8_UNORM_SRGB:
return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
break;
case FORMAT_B8G8R8X8_TYPELESS:
return DXGI_FORMAT_B8G8R8X8_TYPELESS;
break;
case FORMAT_B8G8R8X8_UNORM_SRGB:
return DXGI_FORMAT_B8G8R8X8_UNORM_SRGB;
break;
case FORMAT_BC6H_TYPELESS:
return DXGI_FORMAT_BC6H_TYPELESS;
break;
case FORMAT_BC6H_UF16:
return DXGI_FORMAT_BC6H_UF16;
break;
case FORMAT_BC6H_SF16:
return DXGI_FORMAT_BC6H_SF16;
break;
case FORMAT_BC7_TYPELESS:
return DXGI_FORMAT_BC7_TYPELESS;
break;
case FORMAT_BC7_UNORM:
return DXGI_FORMAT_BC7_UNORM;
break;
case FORMAT_BC7_UNORM_SRGB:
return DXGI_FORMAT_BC7_UNORM_SRGB;
break;
case FORMAT_AYUV:
return DXGI_FORMAT_AYUV;
break;
case FORMAT_Y410:
return DXGI_FORMAT_Y410;
break;
case FORMAT_Y416:
return DXGI_FORMAT_Y416;
break;
case FORMAT_NV12:
return DXGI_FORMAT_NV12;
break;
case FORMAT_P010:
return DXGI_FORMAT_P010;
break;
case FORMAT_P016:
return DXGI_FORMAT_P016;
break;
case FORMAT_420_OPAQUE:
return DXGI_FORMAT_420_OPAQUE;
break;
case FORMAT_YUY2:
return DXGI_FORMAT_YUY2;
break;
case FORMAT_Y210:
return DXGI_FORMAT_Y210;
break;
case FORMAT_Y216:
return DXGI_FORMAT_Y216;
break;
case FORMAT_NV11:
return DXGI_FORMAT_NV11;
break;
case FORMAT_AI44:
return DXGI_FORMAT_AI44;
break;
case FORMAT_IA44:
return DXGI_FORMAT_IA44;
break;
case FORMAT_P8:
return DXGI_FORMAT_P8;
break;
case FORMAT_A8P8:
return DXGI_FORMAT_A8P8;
break;
case FORMAT_B4G4R4A4_UNORM:
return DXGI_FORMAT_B4G4R4A4_UNORM;
break;
case FORMAT_FORCE_UINT:
return DXGI_FORMAT_FORCE_UINT;
break;
default:
break;
}
return DXGI_FORMAT_UNKNOWN;
}
inline D3D11_TEXTURE2D_DESC _ConvertTexture2DDesc(const Texture2DDesc* pDesc)
@@ -620,7 +975,8 @@ inline D3D11_TEXTURE2D_DESC _ConvertTexture2DDesc(const Texture2DDesc* pDesc)
desc.MipLevels = pDesc->MipLevels;
desc.ArraySize = pDesc->ArraySize;
desc.Format = _ConvertFormat(pDesc->Format);
desc.SampleDesc = _ConvertSampleDesc(pDesc->SampleDesc);
desc.SampleDesc.Count = pDesc->SampleDesc.Count;
desc.SampleDesc.Quality = pDesc->SampleDesc.Quality;
desc.Usage = _ConvertUsage(pDesc->Usage);
desc.BindFlags = _ParseBindFlags(pDesc->BindFlags);
desc.CPUAccessFlags = _ParseCPUAccessFlags(pDesc->CPUAccessFlags);
@@ -721,7 +1077,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
D3D11_SHADER_RESOURCE_VIEW_DESC shaderResourceViewDesc;
if (pTexture->desc.MiscFlags & D3D11_RESOURCE_MISC_TEXTURECUBE)
{
shaderResourceViewDesc.Format = pTexture->desc.Format;
shaderResourceViewDesc.Format = _ConvertFormat(pTexture->desc.Format);
if (pTexture->desc.BindFlags & D3D11_BIND_DEPTH_STENCIL)
{
shaderResourceViewDesc.Format = DXGI_FORMAT_R32_FLOAT;
@@ -732,7 +1088,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
}
else
{
shaderResourceViewDesc.Format = pTexture->desc.Format;
shaderResourceViewDesc.Format = _ConvertFormat(pTexture->desc.Format);
if (pTexture->desc.BindFlags & D3D11_BIND_DEPTH_STENCIL)
{
shaderResourceViewDesc.Format = DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
@@ -754,7 +1110,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture2D* pTexture)
D3D11_RENDER_TARGET_VIEW_DESC renderTargetViewDesc;
if (pTexture->desc.MiscFlags & D3D11_RESOURCE_MISC_TEXTURECUBE)
{
renderTargetViewDesc.Format = pTexture->desc.Format;
renderTargetViewDesc.Format = _ConvertFormat(pTexture->desc.Format);
renderTargetViewDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
renderTargetViewDesc.Texture2DArray.FirstArraySlice = 0;
renderTargetViewDesc.Texture2DArray.ArraySize = 6;
@@ -762,7 +1118,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture2D* pTexture)
}
else
{
renderTargetViewDesc.Format = pTexture->desc.Format;
renderTargetViewDesc.Format = _ConvertFormat(pTexture->desc.Format);
renderTargetViewDesc.ViewDimension = (pTexture->desc.SampleDesc.Quality == 0 ? D3D11_RTV_DIMENSION_TEXTURE2D : D3D11_RTV_DIMENSION_TEXTURE2DMS);
renderTargetViewDesc.Texture2D.MipSlice = 0;
}
@@ -1018,3 +1374,5 @@ HRESULT GraphicsDevice_DX11::CreateTextureFromFile(const wstring& fileName, Text
return hr;
}
}
File diff suppressed because it is too large Load Diff
+5 -3
View File
@@ -7,6 +7,8 @@
#include "wiRandom.h"
#include "TextureMapping.h"
using namespace wiGraphicsTypes;
VertexLayout wiHairParticle::il;
VertexShader wiHairParticle::vs;
PixelShader wiHairParticle::ps,wiHairParticle::qps;
@@ -71,9 +73,9 @@ void wiHairParticle::LoadShaders()
VertexLayoutDesc layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TANGENT", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "POSITION", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TANGENT", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = ARRAYSIZE(layout);
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "grassVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
+9 -9
View File
@@ -41,14 +41,14 @@ private:
ALIGN_16
};
static VertexLayout il;
static VertexShader vs;
static PixelShader ps, qps;
static GeometryShader gs[3],qgs[2];
static BufferResource cbgs;
static DepthStencilState dss;
static RasterizerState rs,ncrs;
static BlendState bs;
static wiGraphicsTypes::VertexLayout il;
static wiGraphicsTypes::VertexShader vs;
static wiGraphicsTypes::PixelShader ps, qps;
static wiGraphicsTypes::GeometryShader gs[3],qgs[2];
static wiGraphicsTypes::BufferResource cbgs;
static wiGraphicsTypes::DepthStencilState dss;
static wiGraphicsTypes::RasterizerState rs,ncrs;
static wiGraphicsTypes::BlendState bs;
static int LOD[3];
public:
static void LoadShaders();
@@ -71,6 +71,6 @@ public:
Object* object;
vector<Patch*> patches;
wiSPTree* spTree;
BufferResource vb[3];
wiGraphicsTypes::BufferResource vb[3];
};
+2
View File
@@ -7,6 +7,8 @@
#include "SamplerMapping.h"
#include "TextureMapping.h"
using namespace wiGraphicsTypes;
#pragma region STATICS
BlendState wiImage::blendState, wiImage::blendStateAdd, wiImage::blendStateNoBlend, wiImage::blendStateAvg;
BufferResource wiImage::constantBuffer,wiImage::processCb;
+11 -11
View File
@@ -43,17 +43,17 @@ protected:
ALIGN_16
};
static BlendState blendState, blendStateAdd, blendStateNoBlend, blendStateAvg;
static BufferResource constantBuffer,processCb;
static wiGraphicsTypes::BlendState blendState, blendStateAdd, blendStateNoBlend, blendStateAvg;
static wiGraphicsTypes::BufferResource constantBuffer,processCb;
static VertexShader vertexShader,screenVS;
static PixelShader pixelShader,blurHPS,blurVPS,shaftPS,outlinePS,dofPS,motionBlurPS,bloomSeparatePS
static wiGraphicsTypes::VertexShader vertexShader,screenVS;
static wiGraphicsTypes::PixelShader pixelShader,blurHPS,blurVPS,shaftPS,outlinePS,dofPS,motionBlurPS,bloomSeparatePS
,fxaaPS,ssaoPS,ssssPS,deferredPS,linDepthPS,colorGradePS,ssrPS, screenPS, stereogramPS;
static RasterizerState rasterizerState;
static DepthStencilState depthStencilStateGreater,depthStencilStateLess,depthNoStencilState;
static wiGraphicsTypes::RasterizerState rasterizerState;
static wiGraphicsTypes::DepthStencilState depthStencilStateGreater,depthStencilStateLess,depthNoStencilState;
public:
static void LoadShaders();
@@ -65,12 +65,12 @@ private:
public:
wiImage();
static void Draw(Texture2D* texture, const wiImageEffects& effects);
static void Draw(Texture2D* texture, const wiImageEffects& effects,GRAPHICSTHREAD threadID);
static void Draw(wiGraphicsTypes::Texture2D* texture, const wiImageEffects& effects);
static void Draw(wiGraphicsTypes::Texture2D* texture, const wiImageEffects& effects,GRAPHICSTHREAD threadID);
static void DrawDeferred(Texture2D* texture
, Texture2D* depth, Texture2D* lightmap, Texture2D* normal
, Texture2D* ao, GRAPHICSTHREAD threadID, int stencilref = 0);
static void DrawDeferred(wiGraphicsTypes::Texture2D* texture
, wiGraphicsTypes::Texture2D* depth, wiGraphicsTypes::Texture2D* lightmap, wiGraphicsTypes::Texture2D* normal
, wiGraphicsTypes::Texture2D* ao, GRAPHICSTHREAD threadID, int stencilref = 0);
static void Load();
static void CleanUp();
+4 -4
View File
@@ -94,13 +94,13 @@ public:
};
Processing process;
bool deferred;
Texture2D* maskMap, *distortionMap, *refractionSource;
wiGraphicsTypes::Texture2D* maskMap, *distortionMap, *refractionSource;
// Generic texture
void setMaskMap(Texture2D* view) { maskMap = view; }
void setMaskMap(wiGraphicsTypes::Texture2D* view) { maskMap = view; }
// The normalmap texture which should distort the refraction source
void setDistortionMap(Texture2D* view) { distortionMap = view; }
void setDistortionMap(wiGraphicsTypes::Texture2D* view) { distortionMap = view; }
// The texture which should be distorted
void setRefractionSource(Texture2D* view) { refractionSource = view; }
void setRefractionSource(wiGraphicsTypes::Texture2D* view) { refractionSource = view; }
void init() {
pos = XMFLOAT3(0, 0, 0);
+2 -1
View File
@@ -3,6 +3,7 @@
#include "wiResourceManager.h"
#include "TextureMapping.h"
using namespace wiGraphicsTypes;
BufferResource wiLensFlare::constantBuffer;
PixelShader wiLensFlare::pixelShader;
@@ -75,7 +76,7 @@ void wiLensFlare::LoadShaders(){
VertexLayoutDesc layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "POSITION", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = ARRAYSIZE(layout);
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "lensFlareVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
+9 -9
View File
@@ -6,14 +6,14 @@
class wiLensFlare
{
private:
static BufferResource constantBuffer;
static PixelShader pixelShader;
static GeometryShader geometryShader;
static VertexShader vertexShader;
static VertexLayout inputLayout;
static RasterizerState rasterizerState;
static DepthStencilState depthStencilState;
static BlendState blendState;
static wiGraphicsTypes::BufferResource constantBuffer;
static wiGraphicsTypes::PixelShader pixelShader;
static wiGraphicsTypes::GeometryShader geometryShader;
static wiGraphicsTypes::VertexShader vertexShader;
static wiGraphicsTypes::VertexLayout inputLayout;
static wiGraphicsTypes::RasterizerState rasterizerState;
static wiGraphicsTypes::DepthStencilState depthStencilState;
static wiGraphicsTypes::BlendState blendState;
GFX_STRUCT ConstantBuffer
{
@@ -33,7 +33,7 @@ private:
public:
static void Initialize();
static void CleanUp();
static void Draw(GRAPHICSTHREAD threadID, const XMVECTOR& lightPos, vector<Texture2D*>& rims);
static void Draw(GRAPHICSTHREAD threadID, const XMVECTOR& lightPos, vector<wiGraphicsTypes::Texture2D*>& rims);
};
#endif
+2
View File
@@ -1,6 +1,8 @@
#include "wiLines.h"
#include "wiRenderer.h"
using namespace wiGraphicsTypes;
Lines::Lines()
{
desc = Description();
+1 -1
View File
@@ -41,7 +41,7 @@ public:
Description desc;
int parentArmature,parentBone;
BufferResource vertexBuffer;
wiGraphicsTypes::BufferResource vertexBuffer;
ALIGN_16
};
+1
View File
@@ -10,6 +10,7 @@
#include "wiTextureHelper.h"
#include "wiPHYSICS.h"
using namespace wiGraphicsTypes;
void LoadWiArmatures(const string& directory, const string& name, const string& identifier, vector<Armature*>& armatures)
{
+15 -15
View File
@@ -99,25 +99,25 @@ struct Material
bool hasRefMap;
string refMapName;
Texture2D* refMap;
wiGraphicsTypes::Texture2D* refMap;
bool hasTexture;
string textureName;
Texture2D* texture;
wiGraphicsTypes::Texture2D* texture;
bool premultipliedTexture;
BLENDMODE blendFlag;
bool hasNormalMap;
string normalMapName;
Texture2D* normalMap;
wiGraphicsTypes::Texture2D* normalMap;
bool hasDisplacementMap;
string displacementMapName;
Texture2D* displacementMap;
wiGraphicsTypes::Texture2D* displacementMap;
bool hasSpecularMap;
string specularMapName;
Texture2D* specularMap;
wiGraphicsTypes::Texture2D* specularMap;
bool subsurface_scattering;
bool toonshading;
@@ -290,10 +290,10 @@ struct Mesh{
static thread_local vector<Instance> instances;
BufferResource meshVertBuff;
static BufferResource meshInstanceBuffer;
BufferResource meshIndexBuff;
BufferResource sOutBuffer;
wiGraphicsTypes::BufferResource meshVertBuff;
static wiGraphicsTypes::BufferResource meshInstanceBuffer;
wiGraphicsTypes::BufferResource meshIndexBuff;
wiGraphicsTypes::BufferResource sOutBuffer;
vector<string> materialNames;
vector<int> materialIndices;
@@ -502,9 +502,9 @@ struct Object : public Streamable, public Transform
//RIBBON TRAIL
deque<RibbonVertex> trail;
BufferResource trailBuff;
Texture2D* trailDistortTex;
Texture2D* trailTex;
wiGraphicsTypes::BufferResource trailBuff;
wiGraphicsTypes::Texture2D* trailDistortTex;
wiGraphicsTypes::Texture2D* trailTex;
int physicsObjectI;
@@ -785,7 +785,7 @@ struct Light : public Cullable , public Transform
XMFLOAT4 enerDis;
bool noHalo;
bool shadow;
vector<Texture2D*> lensFlareRimTextures;
vector<wiGraphicsTypes::Texture2D*> lensFlareRimTextures;
vector<string> lensFlareNames;
//vector<wiRenderTarget> shadowMap;
@@ -826,7 +826,7 @@ struct Light : public Cullable , public Transform
struct Decal : public Cullable, public Transform
{
string texName,norName;
Texture2D* texture,*normal;
wiGraphicsTypes::Texture2D* texture,*normal;
XMFLOAT4X4 view,projection;
XMFLOAT3 front;
float life,fadeStart;
@@ -979,7 +979,7 @@ struct Camera:public Transform{
};
struct HitSphere:public SPHERE, public Transform{
float radius_saved, radius;
static BufferResource vertexBuffer;
static wiGraphicsTypes::BufferResource vertexBuffer;
enum HitSphereType{
HITTYPE,
ATKTYPE,
+6 -4
View File
@@ -2,6 +2,8 @@
#include "wiRenderer.h"
#include "wiDepthTarget.h"
using namespace wiGraphicsTypes;
wiRenderTarget::wiRenderTarget()
{
@@ -10,7 +12,7 @@ wiRenderTarget::wiRenderTarget()
isCube = false;
}
wiRenderTarget::wiRenderTarget(UINT width, UINT height, int numViews, bool hasDepth, UINT MSAAC, UINT MSAAQ
, DXGI_FORMAT format, UINT mipMapLevelCount)
, FORMAT format, UINT mipMapLevelCount)
{
numViews = 0;
depth = nullptr;
@@ -37,7 +39,7 @@ void wiRenderTarget::clear() {
}
void wiRenderTarget::Initialize(UINT width, UINT height, int numViews, bool hasDepth, UINT MSAAC, UINT MSAAQ
, DXGI_FORMAT format, UINT mipMapLevelCount)
, FORMAT format, UINT mipMapLevelCount)
{
clear();
@@ -103,7 +105,7 @@ void wiRenderTarget::Initialize(UINT width, UINT height, int numViews, bool hasD
depth->Initialize(width,height,MSAAC,MSAAQ);
}
}
void wiRenderTarget::InitializeCube(UINT size, int numViews, bool hasDepth, DXGI_FORMAT format, UINT mipMapLevelCount)
void wiRenderTarget::InitializeCube(UINT size, int numViews, bool hasDepth, FORMAT format, UINT mipMapLevelCount)
{
clear();
@@ -175,7 +177,7 @@ void wiRenderTarget::InitializeCube(UINT size, int numViews, bool hasDepth, DXGI
}
void wiRenderTarget::InitializeCube(UINT size, int numViews, bool hasDepth)
{
InitializeCube(size,numViews,hasDepth,DXGI_FORMAT_R8G8B8A8_UNORM);
InitializeCube(size,numViews,hasDepth,FORMAT_R8G8B8A8_UNORM);
}
void wiRenderTarget::Activate(GRAPHICSTHREAD threadID)
+10 -9
View File
@@ -2,6 +2,7 @@
#include "CommonInclude.h"
#include "wiGraphicsAPI.h"
class wiDepthTarget;
class wiRenderTarget
@@ -12,22 +13,22 @@ private:
//vector<Texture2D*> SAVEDshaderResource;
void clear();
//Texture2DDesc textureDesc;
vector<Texture2D*> renderTargets;
vector<TextureCube*> renderTargets_Cube;
vector<wiGraphicsTypes::Texture2D*> renderTargets;
vector<wiGraphicsTypes::TextureCube*> renderTargets_Cube;
bool isCube;
public:
//vector<Texture2D> texture2D;
//vector<RenderTargetView> renderTarget;
//vector<Texture2D*> shaderResource;
ViewPort viewPort;
wiDepthTarget* depth;
wiGraphicsTypes::ViewPort viewPort;
wiDepthTarget* depth;
wiRenderTarget();
wiRenderTarget(UINT width, UINT height, int numViews = 1, bool hasDepth = false, UINT MSAAC = 1, UINT MSAAQ = 0, DXGI_FORMAT format = DXGI_FORMAT_R8G8B8A8_UNORM, UINT mipMapLevelCount = 1);
wiRenderTarget(UINT width, UINT height, int numViews = 1, bool hasDepth = false, UINT MSAAC = 1, UINT MSAAQ = 0, wiGraphicsTypes::FORMAT format = wiGraphicsTypes::FORMAT_R8G8B8A8_UNORM, UINT mipMapLevelCount = 1);
~wiRenderTarget();
void Initialize(UINT width, UINT height, int numViews = 1, bool hasDepth = false, UINT MSAAC = 1, UINT MSAAQ = 0, DXGI_FORMAT format = DXGI_FORMAT_R8G8B8A8_UNORM, UINT mipMapLevelCount = 1);
void InitializeCube(UINT size, int numViews, bool hasDepth, DXGI_FORMAT format, UINT mipMapLevelCount = 1);
void Initialize(UINT width, UINT height, int numViews = 1, bool hasDepth = false, UINT MSAAC = 1, UINT MSAAQ = 0, wiGraphicsTypes::FORMAT format = wiGraphicsTypes::FORMAT_R8G8B8A8_UNORM, UINT mipMapLevelCount = 1);
void InitializeCube(UINT size, int numViews, bool hasDepth, wiGraphicsTypes::FORMAT format, UINT mipMapLevelCount = 1);
void InitializeCube(UINT size, int numViews, bool hasDepth);
void Activate(GRAPHICSTHREAD threadID);
void Activate(GRAPHICSTHREAD threadID, float r, float g, float b, float a);
@@ -39,8 +40,8 @@ public:
//void Retarget(Texture2D* resource);
//void Restore();
Texture2D* GetTexture(int viewID = 0) const{ return (isCube ? renderTargets_Cube[viewID] : renderTargets[viewID]); }
Texture2DDesc GetDesc(int viewID = 0) const { assert(viewID < numViews); return GetTexture(viewID)->desc; }
wiGraphicsTypes::Texture2D* GetTexture(int viewID = 0) const{ return (isCube ? renderTargets_Cube[viewID] : renderTargets[viewID]); }
wiGraphicsTypes::Texture2DDesc GetDesc(int viewID = 0) const { assert(viewID < numViews); return GetTexture(viewID)->desc; }
UINT GetMipCount();
bool IsInitialized() { return (numViews > 0 || depth != nullptr); }
};
+21 -19
View File
@@ -23,6 +23,8 @@
#include "TextureMapping.h"
#include "wiGraphicsAPI_DX11.h"
using namespace wiGraphicsTypes;
#pragma region STATICS
GraphicsDevice* wiRenderer::graphicsDevice = nullptr;
Sampler wiRenderer::samplers[SSLOT_COUNT];
@@ -214,7 +216,7 @@ void wiRenderer::SetUpStaticComponents()
normalMapRT.Initialize(
GetDevice()->GetScreenWidth()
,GetDevice()->GetScreenHeight()
,1,false,1,0,DXGI_FORMAT_R8G8B8A8_SNORM
,1,false,1,0,FORMAT_R8G8B8A8_SNORM
);
imagesRTAdd.Initialize(
GetDevice()->GetScreenWidth()
@@ -546,15 +548,15 @@ void wiRenderer::LoadBasicShaders()
{
VertexLayoutDesc layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "POSITION", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 1, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "MATI", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 2, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "COLOR_DITHER", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 0, FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 1, FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 2, FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "COLOR_DITHER", 0, FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
};
UINT numElements = ARRAYSIZE(layout);
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "objectVS10.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
@@ -568,11 +570,11 @@ void wiRenderer::LoadBasicShaders()
VertexLayoutDesc oslayout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 2, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "POSITION", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 1, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 2, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = ARRAYSIZE(oslayout);
@@ -632,7 +634,7 @@ void wiRenderer::LoadLineShaders()
{
VertexLayoutDesc layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "POSITION", 0, FORMAT_R32G32B32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = ARRAYSIZE(layout);
@@ -682,9 +684,9 @@ void wiRenderer::LoadWaterShaders()
void wiRenderer::LoadTrailShaders(){
VertexLayoutDesc layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "POSITION", 0, FORMAT_R32G32B32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, FORMAT_R32G32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 1, FORMAT_R32G32B32A32_FLOAT, 0, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = ARRAYSIZE(layout);
@@ -3179,7 +3181,7 @@ void wiRenderer::PutEnvProbe(const XMFLOAT3& position, int resolution)
{
EnvironmentProbe* probe = new EnvironmentProbe;
probe->transform(position);
probe->cubeMap.InitializeCube(resolution, 1, true, DXGI_FORMAT_R16G16B16A16_FLOAT, 0);
probe->cubeMap.InitializeCube(resolution, 1, true, FORMAT_R16G16B16A16_FLOAT, 0);
GetDevice()->LOCK();
+27 -27
View File
@@ -48,8 +48,8 @@ typedef map<string, Material*> MaterialCollection;
class wiRenderer
{
public:
static GraphicsDevice* graphicsDevice;
static GraphicsDevice* GetDevice() { return graphicsDevice; }
static wiGraphicsTypes::GraphicsDevice* graphicsDevice;
static wiGraphicsTypes::GraphicsDevice* GetDevice() { return graphicsDevice; }
#ifndef WINSTORE_SUPPORT
static void InitDevice(HWND window, int screenW, int screenH, bool windowed);
@@ -59,7 +59,7 @@ public:
static void Present(function<void()> drawToScreen1=nullptr,function<void()> drawToScreen2=nullptr,function<void()> drawToScreen3=nullptr);
static Sampler samplers[SSLOT_COUNT];
static wiGraphicsTypes::Sampler samplers[SSLOT_COUNT];
static int SHADOWMAPRES,SOFTSHADOW,POINTLIGHTSHADOW,POINTLIGHTSHADOWRES,SPOTLIGHTSHADOW,SPOTLIGHTSHADOWRES;
@@ -248,16 +248,16 @@ protected:
};
static BufferResource constantBuffers[CBTYPE_LAST];
static VertexShader vertexShaders[VSTYPE_LAST];
static PixelShader pixelShaders[PSTYPE_LAST];
static GeometryShader geometryShaders[GSTYPE_LAST];
static HullShader hullShaders[HSTYPE_LAST];
static DomainShader domainShaders[DSTYPE_LAST];
static RasterizerState rasterizers[RSTYPE_LAST];
static DepthStencilState depthStencils[DSSTYPE_LAST];
static VertexLayout vertexLayouts[VLTYPE_LAST];
static BlendState blendStates[BSTYPE_LAST];
static wiGraphicsTypes::BufferResource constantBuffers[CBTYPE_LAST];
static wiGraphicsTypes::VertexShader vertexShaders[VSTYPE_LAST];
static wiGraphicsTypes::PixelShader pixelShaders[PSTYPE_LAST];
static wiGraphicsTypes::GeometryShader geometryShaders[GSTYPE_LAST];
static wiGraphicsTypes::HullShader hullShaders[HSTYPE_LAST];
static wiGraphicsTypes::DomainShader domainShaders[DSTYPE_LAST];
static wiGraphicsTypes::RasterizerState rasterizers[RSTYPE_LAST];
static wiGraphicsTypes::DepthStencilState depthStencils[DSSTYPE_LAST];
static wiGraphicsTypes::VertexLayout vertexLayouts[VLTYPE_LAST];
static wiGraphicsTypes::BlendState blendStates[BSTYPE_LAST];
void UpdateSpheres();
@@ -271,7 +271,7 @@ protected:
static bool wireRender, debugSpheres, debugBoneLines, debugBoxes;
static Texture2D* enviroMap,*colorGrading;
static wiGraphicsTypes::Texture2D* enviroMap,*colorGrading;
static void LoadBuffers();
static void LoadBasicShaders();
static void LoadLineShaders();
@@ -322,10 +322,10 @@ public:
static void SetToDrawDebugBoxes(bool param){debugBoxes=param;}
static bool GetToDrawDebugSpheres(){return debugSpheres;};
static bool GetToDrawDebugBoxes(){return debugBoxes;};
static Texture2D* GetColorGrading(){return colorGrading;};
static void SetColorGrading(Texture2D* tex){colorGrading=tex;};
static void SetEnviromentMap(Texture2D* tex){ enviroMap = tex; }
static Texture2D* GetEnviromentMap(){ return enviroMap; }
static wiGraphicsTypes::Texture2D* GetColorGrading(){return colorGrading;};
static void SetColorGrading(wiGraphicsTypes::Texture2D* tex){colorGrading=tex;};
static void SetEnviromentMap(wiGraphicsTypes::Texture2D* tex){ enviroMap = tex; }
static wiGraphicsTypes::Texture2D* GetEnviromentMap(){ return enviroMap; }
static Transform* getTransformByName(const string& name);
@@ -352,28 +352,28 @@ public:
static void UpdateFrameCB(GRAPHICSTHREAD threadID);
static void UpdateCameraCB(GRAPHICSTHREAD threadID);
static void SetClipPlane(XMFLOAT4 clipPlane, GRAPHICSTHREAD threadID);
static void UpdateGBuffer(Texture2D* slot0, Texture2D* slot1, Texture2D* slot2, Texture2D* slot3, Texture2D* slot4, GRAPHICSTHREAD threadID);
static void UpdateDepthBuffer(Texture2D* depth, Texture2D* linearDepth, GRAPHICSTHREAD threadID);
static void UpdateGBuffer(wiGraphicsTypes::Texture2D* slot0, wiGraphicsTypes::Texture2D* slot1, wiGraphicsTypes::Texture2D* slot2, wiGraphicsTypes::Texture2D* slot3, wiGraphicsTypes::Texture2D* slot4, GRAPHICSTHREAD threadID);
static void UpdateDepthBuffer(wiGraphicsTypes::Texture2D* depth, wiGraphicsTypes::Texture2D* linearDepth, GRAPHICSTHREAD threadID);
static void DrawSky(GRAPHICSTHREAD threadID, bool isReflection = false);
static void DrawSun(GRAPHICSTHREAD threadID);
static void DrawWorld(Camera* camera, bool DX11Eff, int tessF, GRAPHICSTHREAD threadID
, bool BlackOut, bool isReflection, SHADERTYPE shaded, Texture2D* refRes, bool grass, GRAPHICSTHREAD thread);
, bool BlackOut, bool isReflection, SHADERTYPE shaded, wiGraphicsTypes::Texture2D* refRes, bool grass, GRAPHICSTHREAD thread);
static void ClearShadowMaps(GRAPHICSTHREAD threadID);
static void DrawForShadowMap(GRAPHICSTHREAD threadID);
static void DrawWorldTransparent(Camera* camera, Texture2D* refracRes, Texture2D* refRes
, Texture2D* waterRippleNormals, GRAPHICSTHREAD threadID);
static void DrawWorldTransparent(Camera* camera, wiGraphicsTypes::Texture2D* refracRes, wiGraphicsTypes::Texture2D* refRes
, wiGraphicsTypes::Texture2D* waterRippleNormals, GRAPHICSTHREAD threadID);
void DrawDebugSpheres(Camera* camera, GRAPHICSTHREAD threadID);
static void DrawDebugBoneLines(Camera* camera, GRAPHICSTHREAD threadID);
static void DrawDebugLines(Camera* camera, GRAPHICSTHREAD threadID);
static void DrawDebugBoxes(Camera* camera, GRAPHICSTHREAD threadID);
static void DrawSoftParticles(Camera* camera, GRAPHICSTHREAD threadID, bool dark = false);
static void DrawSoftPremulParticles(Camera* camera, GRAPHICSTHREAD threadID, bool dark = false);
static void DrawTrails(GRAPHICSTHREAD threadID, Texture2D* refracRes);
static void DrawImagesAdd(GRAPHICSTHREAD threadID, Texture2D* refracRes);
static void DrawTrails(GRAPHICSTHREAD threadID, wiGraphicsTypes::Texture2D* refracRes);
static void DrawImagesAdd(GRAPHICSTHREAD threadID, wiGraphicsTypes::Texture2D* refracRes);
//alpha-opaque
static void DrawImages(GRAPHICSTHREAD threadID, Texture2D* refracRes);
static void DrawImagesNormals(GRAPHICSTHREAD threadID, Texture2D* refracRes);
static void DrawImages(GRAPHICSTHREAD threadID, wiGraphicsTypes::Texture2D* refracRes);
static void DrawImagesNormals(GRAPHICSTHREAD threadID, wiGraphicsTypes::Texture2D* refracRes);
static void DrawLights(Camera* camera, GRAPHICSTHREAD threadID, unsigned int stencilRef = 2);
static void DrawVolumeLights(Camera* camera, GRAPHICSTHREAD threadID);
static void DrawLensFlares(GRAPHICSTHREAD threadID);
+2
View File
@@ -12,6 +12,8 @@
#include "wiHairParticle.h"
#include "wiPHYSICS.h"
using namespace wiGraphicsTypes;
namespace wiRenderer_BindLua
{
+2
View File
@@ -3,6 +3,8 @@
#include "wiSound.h"
#include "wiHelper.h"
using namespace wiGraphicsTypes;
wiResourceManager::filetypes wiResourceManager::types;
wiResourceManager* wiResourceManager::globalResources = nullptr;
+1 -1
View File
@@ -50,7 +50,7 @@ public:
const Resource* get(const string& name, bool IncRefCount = false);
//specify datatype for shaders
void* add(const string& name, Data_Type newType = Data_Type::DYNAMIC
, VertexLayoutDesc* vertexLayoutDesc = nullptr, UINT elementCount = 0, StreamOutDeclaration* streamOutDecl = nullptr);
, wiGraphicsTypes::VertexLayoutDesc* vertexLayoutDesc = nullptr, UINT elementCount = 0, wiGraphicsTypes::StreamOutDeclaration* streamOutDecl = nullptr);
bool del(const string& name, bool forceDelete = false);
bool CleanUp();
};
@@ -4,6 +4,7 @@
#include "Texture_BindLua.h"
#include "wiRenderer.h"
using namespace wiGraphicsTypes;
const char wiResourceManager_BindLua::className[] = "Resource";
+2
View File
@@ -4,6 +4,8 @@
#include "wiImage.h"
#include "wiRenderer.h"
using namespace wiGraphicsTypes;
wiSprite::wiSprite(wiResourceManager* contentHolder) :ContentHolder(contentHolder)
{
+4 -4
View File
@@ -9,7 +9,7 @@ class wiSprite : public wiImage
{
private:
string texture, mask, normal;
Texture2D* texturePointer,*normalPointer,*maskPointer;
wiGraphicsTypes::Texture2D* texturePointer,*normalPointer,*maskPointer;
wiResourceManager* ContentHolder;
public:
wiSprite(wiResourceManager* contentHolder = nullptr);
@@ -22,7 +22,7 @@ public:
void Update(float);
void Update();
void Draw(Texture2D* refracRes, GRAPHICSTHREAD threadID);
void Draw(wiGraphicsTypes::Texture2D* refracRes, GRAPHICSTHREAD threadID);
void Draw();
void DrawNormal(GRAPHICSTHREAD threadID);
@@ -66,7 +66,7 @@ public:
};
Anim anim;
Texture2D* getTexture(){return texturePointer;}
void setTexture(Texture2D* value){texturePointer=value;}
wiGraphicsTypes::Texture2D* getTexture(){return texturePointer;}
void setTexture(wiGraphicsTypes::Texture2D* value){texturePointer=value;}
};
+1 -1
View File
@@ -1,7 +1,7 @@
#include "wiTextureHelper.h"
#include "wiRandom.h"
wiTextureHelper::wiTextureHelperInstance* wiTextureHelper::instance = nullptr;
using namespace wiGraphicsTypes;
wiTextureHelper::wiTextureHelperInstance::wiTextureHelperInstance()
{
+14 -30
View File
@@ -17,41 +17,39 @@ private:
HELPERTEXTURE_NORMALMAPDEFAULT,
HELPERTEXTURE_COUNT
};
Texture2D* helperTextures[HELPERTEXTURE_COUNT];
wiGraphicsTypes::Texture2D* helperTextures[HELPERTEXTURE_COUNT];
unordered_map<unsigned long, Texture2D*> colorTextures;
unordered_map<unsigned long, wiGraphicsTypes::Texture2D*> colorTextures;
public:
wiTextureHelperInstance();
~wiTextureHelperInstance();
Texture2D* getRandom64x64();
Texture2D* getColorGradeDefault();
Texture2D* getNormalMapDefault();
wiGraphicsTypes::Texture2D* getRandom64x64();
wiGraphicsTypes::Texture2D* getColorGradeDefault();
wiGraphicsTypes::Texture2D* getNormalMapDefault();
Texture2D* getWhite();
Texture2D* getBlack();
Texture2D* getTransparent();
Texture2D* getColor(const wiColor& color);
wiGraphicsTypes::Texture2D* getWhite();
wiGraphicsTypes::Texture2D* getBlack();
wiGraphicsTypes::Texture2D* getTransparent();
wiGraphicsTypes::Texture2D* getColor(const wiColor& color);
};
static wiTextureHelperInstance* instance;
public:
inline static wiTextureHelperInstance* getInstance()
static wiTextureHelperInstance* getInstance()
{
if (instance != nullptr)
return instance;
return instance = new wiTextureHelperInstance();
static wiTextureHelperInstance* instance = new wiTextureHelperInstance();
return instance;
}
template<typename T>
static HRESULT CreateTexture(Texture2D*& texture, T* data, UINT width, UINT height, UINT channelCount, DXGI_FORMAT format = DXGI_FORMAT_R8G8B8A8_UNORM)
static HRESULT CreateTexture(wiGraphicsTypes::Texture2D*& texture, T* data, UINT width, UINT height, UINT channelCount, wiGraphicsTypes::FORMAT format = wiGraphicsTypes::FORMAT_R8G8B8A8_UNORM)
{
if (data == nullptr)
{
return E_FAIL;
}
using namespace wiGraphicsTypes;
Texture2DDesc textureDesc;
ZeroMemory(&textureDesc, sizeof(textureDesc));
@@ -67,27 +65,13 @@ public:
textureDesc.CPUAccessFlags = 0;
textureDesc.MiscFlags = 0;
//ShaderResourceViewDesc shaderResourceViewDesc;
//shaderResourceViewDesc.Format = format;
//shaderResourceViewDesc.ViewDimension = RESOURCE_DIMENSION_TEXTURE2D;
////shaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
////shaderResourceViewDesc.Texture2D.MipLevels = 1;
//shaderResourceViewDesc.mipLevels = 1;
SubresourceData InitData;
ZeroMemory(&InitData, sizeof(InitData));
InitData.pSysMem = data;
InitData.SysMemPitch = static_cast<UINT>(width * channelCount);
//Texture2D* texture2D = nullptr;
HRESULT hr;
hr = wiRenderer::GetDevice()->CreateTexture2D(&textureDesc, &InitData, &texture);
//if (FAILED(hr))
//{
// return hr;
//}
//hr = wiRenderer::GetDevice()->CreateShaderResourceView(texture2D, &shaderResourceViewDesc, &texture);
//SAFE_RELEASE(texture2D);
return hr;
}