updated shader loading, cleaning
This commit is contained in:
@@ -350,7 +350,6 @@ void wiEmittedParticle::LoadShaders()
|
||||
vertexShader = vsinfo->vertexShader;
|
||||
vertexLayout = vsinfo->vertexLayout;
|
||||
}
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "pointspritePS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
@@ -144,7 +144,6 @@ void wiFont::LoadShaders()
|
||||
vertexShader = vsinfo->vertexShader;
|
||||
vertexLayout = vsinfo->vertexLayout;
|
||||
}
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "fontPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
@@ -81,7 +81,6 @@ void wiHairParticle::LoadShaders()
|
||||
vs = vsinfo->vertexShader;
|
||||
il = vsinfo->vertexLayout;
|
||||
}
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -79,8 +79,8 @@ void wiImage::LoadShaders()
|
||||
{
|
||||
|
||||
|
||||
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));
|
||||
vertexShader = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "imageVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
screenVS = static_cast<wiRenderer::VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "screenVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
|
||||
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));
|
||||
|
||||
@@ -105,7 +105,6 @@ void wiLensFlare::LoadShaders(){
|
||||
vertexShader = vsinfo->vertexShader;
|
||||
inputLayout = vsinfo->vertexLayout;
|
||||
}
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
pixelShader = static_cast<wiRenderer::PixelShader>(wiResourceManager::GetShaderManager()->add(wiRenderer::SHADERPATH + "lensFlarePS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
+11
-15
@@ -1004,7 +1004,6 @@ void wiRenderer::LoadBasicShaders()
|
||||
vertexShader10 = vsinfo->vertexShader;
|
||||
vertexLayout = vsinfo->vertexLayout;
|
||||
}
|
||||
delete vsinfo;
|
||||
}
|
||||
|
||||
{
|
||||
@@ -1025,7 +1024,6 @@ void wiRenderer::LoadBasicShaders()
|
||||
sOVS = vsinfo->vertexShader;
|
||||
sOIL = vsinfo->vertexLayout;
|
||||
}
|
||||
delete vsinfo;
|
||||
}
|
||||
|
||||
{
|
||||
@@ -1042,13 +1040,13 @@ void wiRenderer::LoadBasicShaders()
|
||||
}
|
||||
|
||||
|
||||
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));
|
||||
vertexShader = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "effectVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
lightVS[0] = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "dirLightVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
lightVS[1] = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "pointLightVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
lightVS[2] = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "spotLightVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
vSpotLightVS = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "vSpotLightVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
vPointLightVS = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "vPointLightVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
decalVS = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "decalVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
|
||||
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));
|
||||
@@ -1075,7 +1073,6 @@ void wiRenderer::LoadLineShaders()
|
||||
lineVS = vsinfo->vertexShader;
|
||||
lineIL = vsinfo->vertexLayout;
|
||||
}
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
linePS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "linesPS.cso", wiResourceManager::PIXELSHADER));
|
||||
@@ -1089,15 +1086,15 @@ void wiRenderer::LoadTessShaders()
|
||||
}
|
||||
void wiRenderer::LoadSkyShaders()
|
||||
{
|
||||
skyVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "skyVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
skyVS = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "skyVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
skyPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "skyPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
}
|
||||
void wiRenderer::LoadShadowShaders()
|
||||
{
|
||||
|
||||
shVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "shadowVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
cubeShVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "cubeShadowVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
shVS = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "shadowVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
cubeShVS = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "cubeShadowVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
|
||||
shPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "shadowPS.cso", wiResourceManager::PIXELSHADER));
|
||||
cubeShPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "cubeShadowPS.cso", wiResourceManager::PIXELSHADER));
|
||||
@@ -1108,7 +1105,7 @@ void wiRenderer::LoadShadowShaders()
|
||||
void wiRenderer::LoadWaterShaders()
|
||||
{
|
||||
|
||||
waterVS = static_cast<VertexShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "waterVS.cso", wiResourceManager::VERTEXSHADER));
|
||||
waterVS = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "waterVS.cso", wiResourceManager::VERTEXSHADER))->vertexShader;
|
||||
waterPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "waterPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
}
|
||||
@@ -1126,7 +1123,6 @@ void wiRenderer::LoadTrailShaders(){
|
||||
trailVS = vsinfo->vertexShader;
|
||||
trailIL = vsinfo->vertexLayout;
|
||||
}
|
||||
delete vsinfo;
|
||||
|
||||
|
||||
trailPS = static_cast<PixelShader>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "trailPS.cso", wiResourceManager::PIXELSHADER));
|
||||
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
typedef ID3D11GeometryShader* GeometryShader;
|
||||
typedef ID3D11HullShader* HullShader;
|
||||
typedef ID3D11DomainShader* DomainShader;
|
||||
typedef ID3D11ComputeShader* ComputeShader;
|
||||
typedef ID3D11InputLayout* VertexLayout;
|
||||
typedef D3D11_INPUT_ELEMENT_DESC VertexLayoutDesc;
|
||||
typedef ID3D11BlendState* BlendState;
|
||||
|
||||
@@ -130,18 +130,22 @@ void* wiResourceManager::add(const string& name, Data_Type newType
|
||||
BYTE* buffer;
|
||||
size_t bufferSize;
|
||||
if (wiHelper::readByteData(name, &buffer, bufferSize)){
|
||||
wiRenderer::VertexShader shader = nullptr;
|
||||
wiRenderer::graphicsDevice->CreateVertexShader(buffer, bufferSize, NULL, &shader);
|
||||
wiRenderer::VertexShaderInfo* vertexShaderInfo = new wiRenderer::VertexShaderInfo;
|
||||
wiRenderer::graphicsDevice->CreateVertexShader(buffer, bufferSize, NULL, &vertexShaderInfo->vertexShader);
|
||||
if (vertexLayoutDesc != nullptr && elementCount > 0){
|
||||
wiRenderer::VertexShaderInfo* vertexShaderInfo = new wiRenderer::VertexShaderInfo();
|
||||
vertexShaderInfo->vertexShader = shader;
|
||||
wiRenderer::graphicsDevice->CreateInputLayout(vertexLayoutDesc, elementCount, buffer, bufferSize, &vertexShaderInfo->vertexLayout);
|
||||
if (vertexShaderInfo->vertexShader != nullptr && vertexShaderInfo->vertexLayout != nullptr){
|
||||
if (vertexShaderInfo->vertexLayout == nullptr)
|
||||
{
|
||||
success = nullptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
success = vertexShaderInfo;
|
||||
}
|
||||
}
|
||||
else{
|
||||
success = shader;
|
||||
else
|
||||
{
|
||||
success = (vertexShaderInfo->vertexShader == nullptr ? nullptr : vertexShaderInfo);
|
||||
}
|
||||
delete[] buffer;
|
||||
}
|
||||
@@ -237,7 +241,11 @@ void* wiResourceManager::add(const string& name, Data_Type newType
|
||||
|
||||
bool wiResourceManager::del(const string& name)
|
||||
{
|
||||
const Resource* res = get(name);
|
||||
Resource* res = nullptr;
|
||||
container::iterator it = resources.find(name);
|
||||
if (it != resources.end())
|
||||
res = it->second;
|
||||
else return false;
|
||||
|
||||
if(res){
|
||||
LOCK();
|
||||
@@ -247,13 +255,30 @@ bool wiResourceManager::del(const string& name)
|
||||
switch(res->type){
|
||||
case Data_Type::IMAGE:
|
||||
case Data_Type::IMAGE_STAGING:
|
||||
wiRenderer::SafeRelease(reinterpret_cast<wiRenderer::TextureView&>(res->data));
|
||||
break;
|
||||
case Data_Type::VERTEXSHADER:
|
||||
{
|
||||
wiRenderer::VertexShaderInfo* vsinfo = (wiRenderer::VertexShaderInfo*)res->data;
|
||||
wiRenderer::SafeRelease(vsinfo->vertexLayout);
|
||||
wiRenderer::SafeRelease(vsinfo->vertexShader);
|
||||
delete vsinfo;
|
||||
}
|
||||
break;
|
||||
case Data_Type::PIXELSHADER:
|
||||
wiRenderer::SafeRelease(reinterpret_cast<wiRenderer::PixelShader&>(res->data));
|
||||
break;
|
||||
case Data_Type::GEOMETRYSHADER:
|
||||
wiRenderer::SafeRelease(reinterpret_cast<wiRenderer::GeometryShader&>(res->data));
|
||||
break;
|
||||
case Data_Type::HULLSHADER:
|
||||
wiRenderer::SafeRelease(reinterpret_cast<wiRenderer::HullShader&>(res->data));
|
||||
break;
|
||||
case Data_Type::DOMAINSHADER:
|
||||
wiRenderer::SafeRelease(reinterpret_cast<wiRenderer::DomainShader&>(res->data));
|
||||
break;
|
||||
case Data_Type::COMPUTESHADER:
|
||||
wiRenderer::SafeRelease(((wiRenderer::APIInterface&)res->data));
|
||||
wiRenderer::SafeRelease(reinterpret_cast<wiRenderer::ComputeShader&>(res->data));
|
||||
break;
|
||||
case Data_Type::SOUND:
|
||||
case Data_Type::MUSIC:
|
||||
@@ -264,6 +289,7 @@ bool wiResourceManager::del(const string& name)
|
||||
break;
|
||||
};
|
||||
|
||||
delete res;
|
||||
resources.erase(name);
|
||||
|
||||
UNLOCK();
|
||||
@@ -275,7 +301,15 @@ bool wiResourceManager::del(const string& name)
|
||||
|
||||
bool wiResourceManager::CleanUp()
|
||||
{
|
||||
// TODO
|
||||
vector<string>resNames(0);
|
||||
for (auto& x : resources)
|
||||
{
|
||||
resNames.push_back(x.first);
|
||||
}
|
||||
for (auto& x : resNames)
|
||||
{
|
||||
del(x);
|
||||
}
|
||||
LOCK();
|
||||
resources.clear();
|
||||
UNLOCK();
|
||||
|
||||
Reference in New Issue
Block a user