ReloadShaders completed
This commit is contained in:
@@ -124,7 +124,7 @@ You can use the Renderer with the following functions, all of which are in the g
|
||||
- PutWaterRipple(String imagename, Vector position)
|
||||
- PutDecal(Decal decal)
|
||||
- ClearWorld()
|
||||
- ReloadShaders()
|
||||
- ReloadShaders(opt string path)
|
||||
|
||||
## Utility Tools
|
||||
The scripting API provides certain engine features to be used in development.
|
||||
|
||||
@@ -345,7 +345,7 @@ void wiEmittedParticle::LoadShaders()
|
||||
{ "VELOCITY", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
};
|
||||
UINT numElements = ARRAYSIZE(layout);
|
||||
wiRenderer::VertexShaderInfo* vsinfo = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetGlobal()->add("shaders/pointspriteVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
wiRenderer::VertexShaderInfo* vsinfo = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "pointspriteVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
if (vsinfo != nullptr){
|
||||
vertexShader = vsinfo->vertexShader;
|
||||
vertexLayout = vsinfo->vertexLayout;
|
||||
@@ -353,10 +353,10 @@ void wiEmittedParticle::LoadShaders()
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/pointspritePS.cso", wiResourceManager::PIXELSHADER));
|
||||
simplestPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/pointspritePS_simplest.cso", wiResourceManager::PIXELSHADER));
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "pointspritePS.cso", wiResourceManager::PIXELSHADER));
|
||||
simplestPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "pointspritePS_simplest.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
geometryShader = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/pointspriteGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
geometryShader = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "pointspriteGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -61,7 +61,9 @@ private:
|
||||
static ID3D11RasterizerState* rasterizerState,*wireFrameRS;
|
||||
static ID3D11DepthStencilState* depthStencilState;
|
||||
|
||||
public:
|
||||
static void LoadShaders();
|
||||
private:
|
||||
static void SetUpCB();
|
||||
static void SetUpStates();
|
||||
void LoadVertexBuffer();
|
||||
|
||||
@@ -139,7 +139,7 @@ void wiFont::LoadShaders()
|
||||
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
};
|
||||
UINT numElements = ARRAYSIZE(layout);
|
||||
wiRenderer::VertexShaderInfo* vsinfo = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetGlobal()->add("shaders/fontVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
wiRenderer::VertexShaderInfo* vsinfo = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "fontVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
if (vsinfo != nullptr){
|
||||
vertexShader = vsinfo->vertexShader;
|
||||
vertexLayout = vsinfo->vertexLayout;
|
||||
@@ -147,7 +147,7 @@ void wiFont::LoadShaders()
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/fontPS.cso", wiResourceManager::PIXELSHADER));
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "fontPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -63,7 +63,9 @@ protected:
|
||||
|
||||
static void SetUpStates();
|
||||
static void SetUpCB();
|
||||
public:
|
||||
static void LoadShaders();
|
||||
private:
|
||||
static void LoadVertexBuffer();
|
||||
static void LoadIndices();
|
||||
|
||||
|
||||
@@ -66,9 +66,8 @@ void wiHairParticle::CleanUpStatic(){
|
||||
if(ncrs) ncrs->Release(); ncrs=NULL;
|
||||
|
||||
}
|
||||
void wiHairParticle::SetUpStatic(){
|
||||
Settings(10,25,120);
|
||||
|
||||
void wiHairParticle::LoadShaders()
|
||||
{
|
||||
|
||||
D3D11_INPUT_ELEMENT_DESC layout[] =
|
||||
{
|
||||
@@ -77,8 +76,8 @@ void wiHairParticle::SetUpStatic(){
|
||||
{ "TANGENT", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
};
|
||||
UINT numElements = ARRAYSIZE(layout);
|
||||
wiRenderer::VertexShaderInfo* vsinfo = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetGlobal()->add("shaders/grassVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
if (vsinfo != nullptr){
|
||||
wiRenderer::VertexShaderInfo* vsinfo = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "grassVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
if (vsinfo != nullptr) {
|
||||
vs = vsinfo->vertexShader;
|
||||
il = vsinfo->vertexLayout;
|
||||
}
|
||||
@@ -86,25 +85,21 @@ void wiHairParticle::SetUpStatic(){
|
||||
|
||||
|
||||
|
||||
ps = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/grassPS.cso", wiResourceManager::PIXELSHADER));
|
||||
qps = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/qGrassPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
gs[0] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/grassL0GS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
gs[1] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/grassL1GS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
gs[2] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/grassL2GS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
|
||||
qgs[0] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/qGrassLCloseGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
qgs[1] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/qGrassLDistGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ps = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "grassPS.cso", wiResourceManager::PIXELSHADER));
|
||||
qps = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "qGrassPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
gs[0] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "grassL0GS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
gs[1] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "grassL1GS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
gs[2] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "grassL2GS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
|
||||
qgs[0] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "qGrassLCloseGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
qgs[1] = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "qGrassLDistGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
|
||||
}
|
||||
void wiHairParticle::SetUpStatic(){
|
||||
Settings(10,25,120);
|
||||
|
||||
LoadShaders();
|
||||
|
||||
|
||||
//
|
||||
|
||||
@@ -55,6 +55,10 @@ private:
|
||||
static ID3D11SamplerState* ss;
|
||||
static ID3D11BlendState* bs;
|
||||
static int LOD[3];
|
||||
public:
|
||||
static void LoadShaders();
|
||||
private:
|
||||
|
||||
public:
|
||||
wiHairParticle();
|
||||
wiHairParticle(const string& newName, float newLen, int newCount
|
||||
|
||||
+17
-17
@@ -79,24 +79,24 @@ void wiImage::LoadShaders()
|
||||
{
|
||||
|
||||
|
||||
vertexShader = static_cast<wiRenderer::VertexShader>(wiResourceManager::GetGlobal()->add("shaders/imageVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
screenVS = static_cast<wiRenderer::VertexShader>(wiResourceManager::GetGlobal()->add("shaders/screenVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
vertexShader = static_cast<wiRenderer::VertexShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "imageVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
screenVS = static_cast<wiRenderer::VertexShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "screenVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/imagePS.cso", wiResourceManager::PIXELSHADER));
|
||||
blurHPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/horizontalBlurPS.cso", wiResourceManager::PIXELSHADER));
|
||||
blurVPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/verticalBlurPS.cso", wiResourceManager::PIXELSHADER));
|
||||
shaftPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/lightShaftPS.cso", wiResourceManager::PIXELSHADER));
|
||||
outlinePS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/outlinePS.cso", wiResourceManager::PIXELSHADER));
|
||||
dofPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/depthofFieldPS.cso", wiResourceManager::PIXELSHADER));
|
||||
motionBlurPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/motionBlurPS.cso", wiResourceManager::PIXELSHADER));
|
||||
bloomSeparatePS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/bloomSeparatePS.cso", wiResourceManager::PIXELSHADER));
|
||||
fxaaPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/fxaa.cso", wiResourceManager::PIXELSHADER));
|
||||
ssaoPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/ssao.cso", wiResourceManager::PIXELSHADER));
|
||||
ssssPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/ssss.cso", wiResourceManager::PIXELSHADER));
|
||||
linDepthPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/linDepthPS.cso", wiResourceManager::PIXELSHADER));
|
||||
colorGradePS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/colorGradePS.cso", wiResourceManager::PIXELSHADER));
|
||||
deferredPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/deferredPS.cso", wiResourceManager::PIXELSHADER));
|
||||
ssrPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/ssr.cso", wiResourceManager::PIXELSHADER));
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "imagePS.cso", wiResourceManager::PIXELSHADER));
|
||||
blurHPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "horizontalBlurPS.cso", wiResourceManager::PIXELSHADER));
|
||||
blurVPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "verticalBlurPS.cso", wiResourceManager::PIXELSHADER));
|
||||
shaftPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "lightShaftPS.cso", wiResourceManager::PIXELSHADER));
|
||||
outlinePS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "outlinePS.cso", wiResourceManager::PIXELSHADER));
|
||||
dofPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "depthofFieldPS.cso", wiResourceManager::PIXELSHADER));
|
||||
motionBlurPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "motionBlurPS.cso", wiResourceManager::PIXELSHADER));
|
||||
bloomSeparatePS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "bloomSeparatePS.cso", wiResourceManager::PIXELSHADER));
|
||||
fxaaPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "fxaa.cso", wiResourceManager::PIXELSHADER));
|
||||
ssaoPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "ssao.cso", wiResourceManager::PIXELSHADER));
|
||||
ssssPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "ssss.cso", wiResourceManager::PIXELSHADER));
|
||||
linDepthPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "linDepthPS.cso", wiResourceManager::PIXELSHADER));
|
||||
colorGradePS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "colorGradePS.cso", wiResourceManager::PIXELSHADER));
|
||||
deferredPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "deferredPS.cso", wiResourceManager::PIXELSHADER));
|
||||
ssrPS = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "ssr.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -74,7 +74,9 @@ protected:
|
||||
static ID3D11RasterizerState* rasterizerState;
|
||||
static ID3D11DepthStencilState* depthStencilStateGreater,*depthStencilStateLess,*depthNoStencilState;
|
||||
|
||||
public:
|
||||
static void LoadShaders();
|
||||
private:
|
||||
static void LoadBuffers();
|
||||
static void SetUpStates();
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ void wiLensFlare::LoadShaders(){
|
||||
{ "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
};
|
||||
UINT numElements = ARRAYSIZE(layout);
|
||||
wiRenderer::VertexShaderInfo* vsinfo = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetGlobal()->add("shaders/lensFlareVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
wiRenderer::VertexShaderInfo* vsinfo = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "lensFlareVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
if (vsinfo != nullptr){
|
||||
vertexShader = vsinfo->vertexShader;
|
||||
inputLayout = vsinfo->vertexLayout;
|
||||
@@ -108,9 +108,9 @@ void wiLensFlare::LoadShaders(){
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetGlobal()->add("shaders/lensFlarePS.cso", wiResourceManager::PIXELSHADER));
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "lensFlarePS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
geometryShader = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/lensFlareGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
geometryShader = static_cast<wiRenderer::GeometryShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "lensFlareGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,9 @@ private:
|
||||
ALIGN_16
|
||||
};
|
||||
|
||||
public:
|
||||
static void LoadShaders();
|
||||
private:
|
||||
static void SetUpStates();
|
||||
static void SetUpCB();
|
||||
public:
|
||||
|
||||
+82
-58
@@ -19,6 +19,7 @@
|
||||
#include "wiWaterPlane.h"
|
||||
#include "wiGraphicsThreads.h"
|
||||
#include "wiRandom.h"
|
||||
#include "wiFont.h"
|
||||
|
||||
#pragma region STATICS
|
||||
D3D_DRIVER_TYPE wiRenderer::driverType;
|
||||
@@ -74,6 +75,8 @@ WorldInfo wiRenderer::worldInfo;
|
||||
|
||||
vector<wiRenderer::TextureView> wiRenderer::textureSlotsPS(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT);
|
||||
wiRenderer::PixelShader wiRenderer::boundPS=nullptr;
|
||||
|
||||
string wiRenderer::SHADERPATH = "shaders/";
|
||||
#pragma endregion
|
||||
|
||||
#pragma region STATIC TEMP
|
||||
@@ -996,7 +999,7 @@ void wiRenderer::LoadBasicShaders()
|
||||
{ "COLOR_DITHER", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
|
||||
};
|
||||
UINT numElements = ARRAYSIZE(layout);
|
||||
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetGlobal()->add("shaders/effectVS10.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectVS10.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
if (vsinfo != nullptr){
|
||||
vertexShader10 = vsinfo->vertexShader;
|
||||
vertexLayout = vsinfo->vertexLayout;
|
||||
@@ -1017,7 +1020,7 @@ void wiRenderer::LoadBasicShaders()
|
||||
UINT numElements = ARRAYSIZE(oslayout);
|
||||
|
||||
|
||||
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetGlobal()->add("shaders/sOVS.cso", wiResourceManager::VERTEXSHADER, oslayout, numElements));
|
||||
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "sOVS.cso", wiResourceManager::VERTEXSHADER, oslayout, numElements));
|
||||
if (vsinfo != nullptr){
|
||||
sOVS = vsinfo->vertexShader;
|
||||
sOIL = vsinfo->vertexLayout;
|
||||
@@ -1035,29 +1038,29 @@ void wiRenderer::LoadBasicShaders()
|
||||
{ 0, "TEXCOORD", 1, 0, 4, 0 }, // output the first 2 texture coordinates
|
||||
};
|
||||
|
||||
sOGS = static_cast<GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/sOGS.cso", wiResourceManager::GEOMETRYSHADER, nullptr, 4, pDecl));
|
||||
sOGS = static_cast<GeometryShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "sOGS.cso", wiResourceManager::GEOMETRYSHADER, nullptr, 4, pDecl));
|
||||
}
|
||||
|
||||
|
||||
vertexShader = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/effectVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
lightVS[0] = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/dirLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
lightVS[1] = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/pointLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
lightVS[2] = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/spotLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
vSpotLightVS = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/vSpotLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
vPointLightVS = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/vPointLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
decalVS = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/decalVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
vertexShader = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
lightVS[0] = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "dirLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
lightVS[1] = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "pointLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
lightVS[2] = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "spotLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
vSpotLightVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "vSpotLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
vPointLightVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "vPointLightVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
decalVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "decalVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
|
||||
pixelShader = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/effectPS.cso", wiResourceManager::PIXELSHADER));
|
||||
transparentPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/effectPS_transparent.cso", wiResourceManager::PIXELSHADER));
|
||||
simplestPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/effectPS_simplest.cso", wiResourceManager::PIXELSHADER));
|
||||
fowardSimplePS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/effectPS_forwardSimple.cso", wiResourceManager::PIXELSHADER));
|
||||
blackoutPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/effectPS_blackout.cso", wiResourceManager::PIXELSHADER));
|
||||
textureonlyPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/effectPS_textureonly.cso", wiResourceManager::PIXELSHADER));
|
||||
lightPS[0] = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/dirLightPS.cso", wiResourceManager::PIXELSHADER));
|
||||
lightPS[1] = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/pointLightPS.cso", wiResourceManager::PIXELSHADER));
|
||||
lightPS[2] = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/spotLightPS.cso", wiResourceManager::PIXELSHADER));
|
||||
vLightPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/volumeLightPS.cso", wiResourceManager::PIXELSHADER));
|
||||
decalPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/decalPS.cso", wiResourceManager::PIXELSHADER));
|
||||
pixelShader = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectPS.cso", wiResourceManager::PIXELSHADER));
|
||||
transparentPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectPS_transparent.cso", wiResourceManager::PIXELSHADER));
|
||||
simplestPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectPS_simplest.cso", wiResourceManager::PIXELSHADER));
|
||||
fowardSimplePS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectPS_forwardSimple.cso", wiResourceManager::PIXELSHADER));
|
||||
blackoutPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectPS_blackout.cso", wiResourceManager::PIXELSHADER));
|
||||
textureonlyPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectPS_textureonly.cso", wiResourceManager::PIXELSHADER));
|
||||
lightPS[0] = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "dirLightPS.cso", wiResourceManager::PIXELSHADER));
|
||||
lightPS[1] = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "pointLightPS.cso", wiResourceManager::PIXELSHADER));
|
||||
lightPS[2] = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "spotLightPS.cso", wiResourceManager::PIXELSHADER));
|
||||
vLightPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "volumeLightPS.cso", wiResourceManager::PIXELSHADER));
|
||||
decalPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "decalPS.cso", wiResourceManager::PIXELSHADER));
|
||||
}
|
||||
void wiRenderer::LoadLineShaders()
|
||||
{
|
||||
@@ -1067,7 +1070,7 @@ void wiRenderer::LoadLineShaders()
|
||||
};
|
||||
UINT numElements = ARRAYSIZE(layout);
|
||||
|
||||
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetGlobal()->add("shaders/linesVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "linesVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
if (vsinfo != nullptr){
|
||||
lineVS = vsinfo->vertexShader;
|
||||
lineIL = vsinfo->vertexLayout;
|
||||
@@ -1075,38 +1078,38 @@ void wiRenderer::LoadLineShaders()
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
linePS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/linesPS.cso", wiResourceManager::PIXELSHADER));
|
||||
linePS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "linesPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
}
|
||||
void wiRenderer::LoadTessShaders()
|
||||
{
|
||||
hullShader = static_cast<HullShader>(wiResourceManager::GetGlobal()->add("shaders/effectHS.cso", wiResourceManager::HULLSHADER));
|
||||
domainShader = static_cast<DomainShader>(wiResourceManager::GetGlobal()->add("shaders/effectDS.cso", wiResourceManager::DOMAINSHADER));
|
||||
hullShader = static_cast<HullShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectHS.cso", wiResourceManager::HULLSHADER));
|
||||
domainShader = static_cast<DomainShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectDS.cso", wiResourceManager::DOMAINSHADER));
|
||||
|
||||
}
|
||||
void wiRenderer::LoadSkyShaders()
|
||||
{
|
||||
skyVS = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/skyVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
skyPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/skyPS.cso", wiResourceManager::PIXELSHADER));
|
||||
skyVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "skyVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
skyPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "skyPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
}
|
||||
void wiRenderer::LoadShadowShaders()
|
||||
{
|
||||
|
||||
shVS = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/shadowVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
cubeShVS = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/cubeShadowVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
shVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "shadowVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
cubeShVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "cubeShadowVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
|
||||
shPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/shadowPS.cso", wiResourceManager::PIXELSHADER));
|
||||
cubeShPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/cubeShadowPS.cso", wiResourceManager::PIXELSHADER));
|
||||
shPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "shadowPS.cso", wiResourceManager::PIXELSHADER));
|
||||
cubeShPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "cubeShadowPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
cubeShGS = static_cast<GeometryShader>(wiResourceManager::GetGlobal()->add("shaders/cubeShadowGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
cubeShGS = static_cast<GeometryShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "cubeShadowGS.cso", wiResourceManager::GEOMETRYSHADER));
|
||||
|
||||
}
|
||||
void wiRenderer::LoadWaterShaders()
|
||||
{
|
||||
|
||||
waterVS = static_cast<VertexShader>(wiResourceManager::GetGlobal()->add("shaders/waterVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
waterPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/waterPS.cso", wiResourceManager::PIXELSHADER));
|
||||
waterVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "waterVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
waterPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "waterPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
}
|
||||
void wiRenderer::LoadTrailShaders(){
|
||||
@@ -1118,7 +1121,7 @@ void wiRenderer::LoadTrailShaders(){
|
||||
};
|
||||
UINT numElements = ARRAYSIZE(layout);
|
||||
|
||||
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetGlobal()->add("shaders/trailVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "trailVS.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
|
||||
if (vsinfo != nullptr){
|
||||
trailVS = vsinfo->vertexShader;
|
||||
trailIL = vsinfo->vertexLayout;
|
||||
@@ -1126,34 +1129,34 @@ void wiRenderer::LoadTrailShaders(){
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
trailPS = static_cast<PixelShader>(wiResourceManager::GetGlobal()->add("shaders/trailPS.cso", wiResourceManager::PIXELSHADER));
|
||||
trailPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "trailPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
}
|
||||
|
||||
void wiRenderer::ReloadShaders()
|
||||
void wiRenderer::ReloadShaders(const string& path)
|
||||
{
|
||||
//// TODO : Also delete shaders from resourcemanager!
|
||||
//wiResourceManager::GetGlobal()->del("shaders/effectVS10.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/sOVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/sOGS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/effectVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/dirLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/pointLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/spotLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/vSpotLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/vPointLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/decalVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/effectPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/effectPS_transparent.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/effectPS_simplest.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/effectPS_forwardSimple.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/effectPS_blackout.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/effectPS_textureonly.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/dirLightPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/pointLightPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/spotLightPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/volumeLightPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del("shaders/decalPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "effectVS10.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "sOVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "sOGS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "effectVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "dirLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "pointLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "spotLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "vSpotLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "vPointLightVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "decalVS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "effectPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "effectPS_transparent.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "effectPS_simplest.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "effectPS_forwardSimple.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "effectPS_blackout.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "effectPS_textureonly.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "dirLightPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "pointLightPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "spotLightPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "volumeLightPS.cso");
|
||||
//wiResourceManager::GetGlobal()->del(SHADERPATH + "decalPS.cso");
|
||||
|
||||
|
||||
//LoadBasicShaders();
|
||||
@@ -1163,6 +1166,27 @@ void wiRenderer::ReloadShaders()
|
||||
////LoadShadowShaders();
|
||||
////LoadWaterShaders();
|
||||
////LoadTrailShaders();
|
||||
|
||||
if (path.length() > 0)
|
||||
{
|
||||
SHADERPATH = path;
|
||||
}
|
||||
|
||||
graphicsMutex.lock();
|
||||
wiResourceManager::GetShaderManager()->CleanUp();
|
||||
LoadBasicShaders();
|
||||
LoadLineShaders();
|
||||
LoadTessShaders();
|
||||
LoadSkyShaders();
|
||||
LoadShadowShaders();
|
||||
LoadWaterShaders();
|
||||
LoadTrailShaders();
|
||||
wiHairParticle::LoadShaders();
|
||||
wiEmittedParticle::LoadShaders();
|
||||
wiFont::LoadShaders();
|
||||
wiImage::LoadShaders();
|
||||
wiLensFlare::LoadShaders();
|
||||
graphicsMutex.unlock();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -361,6 +361,7 @@ protected:
|
||||
static void RecursiveBoneTransform(Armature* armature, Bone* bone, const XMMATRIX& parentCombinedMat);
|
||||
static XMVECTOR InterPolateKeyFrames(float currentFrame, const int frameCount,const std::vector<KeyFrame>& keyframes, KeyFrameType type);
|
||||
public:
|
||||
static string SHADERPATH;
|
||||
|
||||
wiRenderer();
|
||||
void CleanUp();
|
||||
@@ -406,7 +407,7 @@ public:
|
||||
static Object* getObjectByName(const string& name);
|
||||
static Light* getLightByName(const string& name);
|
||||
|
||||
static void ReloadShaders();
|
||||
static void ReloadShaders(const string& path = "");
|
||||
|
||||
static Vertex TransformVertex(const Mesh* mesh, int vertexI, const XMMATRIX& mat = XMMatrixIdentity());
|
||||
static Vertex TransformVertex(const Mesh* mesh, const SkinnedVertex& vertex, const XMMATRIX& mat = XMMatrixIdentity());
|
||||
|
||||
@@ -525,6 +525,10 @@ namespace wiRenderer_BindLua
|
||||
}
|
||||
int ReloadShaders(lua_State* L)
|
||||
{
|
||||
if (wiLua::SGetArgCount(L) > 0)
|
||||
{
|
||||
wiRenderer::ReloadShaders(wiLua::SGetString(L, 1));
|
||||
}
|
||||
wiRenderer::ReloadShaders();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,11 @@ wiResourceManager* wiResourceManager::GetGlobal()
|
||||
}
|
||||
return globalResources;
|
||||
}
|
||||
wiResourceManager* wiResourceManager::GetShaderManager()
|
||||
{
|
||||
static wiResourceManager* shaderManager = new wiResourceManager;
|
||||
return shaderManager;
|
||||
}
|
||||
|
||||
void wiResourceManager::SetUp()
|
||||
{
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
wiResourceManager();
|
||||
~wiResourceManager();
|
||||
static wiResourceManager* GetGlobal();
|
||||
static wiResourceManager* GetShaderManager();
|
||||
|
||||
const Resource* get(const string& name);
|
||||
//specify datatype for shaders
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace wiVersion
|
||||
// minor features, major bug fixes
|
||||
const int minor = 3;
|
||||
// minor bug fixes, alterations
|
||||
const int revision = 2;
|
||||
const int revision = 4;
|
||||
|
||||
|
||||
long GetVersion()
|
||||
|
||||
Reference in New Issue
Block a user