Commit 13ece842 authored by D-AIRY's avatar D-AIRY

Removed some dead code

parent 79965d75
......@@ -201,12 +201,6 @@
</ClCompile>
<ClCompile Include="..\..\..\source\gcore\gcore_data.cpp" />
<ClCompile Include="..\..\..\source\gcore\gcore_utils.cpp" />
<ClCompile Include="..\..\..\source\gcore\LoaderTextures.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\source\gcore\shader.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
......@@ -230,7 +224,6 @@
<ClInclude Include="..\..\..\source\gcore\camera.h" />
<ClInclude Include="..\..\..\source\gcore\gcore_data.h" />
<ClInclude Include="..\..\..\source\gcore\gcore_utils.h" />
<ClInclude Include="..\..\..\source\gcore\LoaderTextures.h" />
<ClInclude Include="..\..\..\source\gcore\shader.h" />
<ClInclude Include="..\..\..\source\gcore\ShaderPreprocessor.h" />
<ClInclude Include="..\..\..\source\gcore\sxgcore.h" />
......
......@@ -10,9 +10,6 @@
<ClCompile Include="..\..\..\source\gcore\camera.cpp">
<Filter>Source</Filter>
</ClCompile>
<ClCompile Include="..\..\..\source\gcore\LoaderTextures.cpp">
<Filter>Source</Filter>
</ClCompile>
<ClCompile Include="..\..\..\source\gcore\bound.cpp">
<Filter>Source</Filter>
</ClCompile>
......@@ -44,9 +41,6 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\source\gcore\LoaderTextures.h">
<Filter>Header</Filter>
</ClInclude>
<ClInclude Include="..\..\..\source\gcore\shader.h">
<Filter>Header</Filter>
</ClInclude>
......
......@@ -102,7 +102,7 @@
</PrecompiledHeader>
<WarningLevel>Level1</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;SXMTRL_EXPORTS;SX_LIB_NAME="LIGHT";SX_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;SXMTRL_EXPORTS;SX_LIB_NAME="MTRL";SX_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
......@@ -119,7 +119,7 @@
</PrecompiledHeader>
<WarningLevel>Level1</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;SXMTRL_EXPORTS;SX_LIB_NAME="LIGHT";SX_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;SXMTRL_EXPORTS;SX_LIB_NAME="MTRL";SX_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
......@@ -138,7 +138,7 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SXMTRL_EXPORTS;SX_LIB_NAME="LIGHT";SX_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SXMTRL_EXPORTS;SX_LIB_NAME="MTRL";SX_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
......@@ -158,7 +158,7 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;SXMTRL_EXPORTS;SX_LIB_NAME="LIGHT";SX_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;SXMTRL_EXPORTS;SX_LIB_NAME="MTRL";SX_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
......
This diff is collapsed.
/***********************************************************
Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017, 2018
See the license in LICENSE
***********************************************************/
#ifndef __LOADERTEXTURES_H
#define __LOADERTEXTURES_H
#include <gdefines.h>
#include <graphix/graphix.h>
#include <common/array.h>
#include <common/String.h>
#include "sxgcore.h"
#include <common/ConcurrentQueue.h>
void LibReport(int iLevel, const char *szFormat, ...);
extern IGXContext *g_pDevice;
//! загрузчик текстур
class CLoaderTextures
{
public:
CLoaderTextures();
~CLoaderTextures();
//! удалить все загруженные текстуры
void clearLoaded();
//! удалить текстуру id
void deleteTexture(ID id);
//! добавляем имя текстуры, взамен получаем на нее ID (поставить в очередь)
ID addName(const char *szName, LOAD_TEXTURE_TYPE type, ID *pIDdir = 0, ID *pIDname = 0);
//! получить id по имени
ID getID(const char *szName);
//получить имя по id
void getName(ID id, char *szName);
//! создать место для текстуры tex
ID create(const char *szName, IGXTexture2D *pTex);
//! перезагрузить текстуру name
ID update(const char *szName, LOAD_TEXTURE_TYPE type);
//! перезагрузить текстуру по id
void update(ID id);
//! загрузка всех текстур поставленных в очередь
void loadTextures();
//! получить текстуру по id
IGXTexture2D* getTexture2d(ID id);
void setTexture2d(ID id, IGXTexture2D *pTexture);
//! получить текстуру по id
IGXTextureCube* getTextureCube(ID id);
private:
//! структура описывающая папку и все текстуры в ней, у каждой свой id для доступа
struct CPath
{
CPath(){}
~CPath()
{
for (int i = 0; i < m_aTextures.size(); ++i)
{
mem_delete(m_aTextures[i]);
}
m_aTextures.clear();
}
//! имя папки
String m_sPath;
//! текущее представление текстуры
struct CTex
{
CTex(){ m_id = -1; m_type = LOAD_TEXTURE_TYPE_LOAD; }
CTex(ID id, const char *szNname, LOAD_TEXTURE_TYPE type){ m_id = id; m_sName = szNname; m_type = type; }
//! глобальный идентификатор
ID m_id;
//! имя текстуры
String m_sName;
//! тип #LOAD_TEXTURE_TYPE
LOAD_TEXTURE_TYPE m_type;
};
Array<CTex*> m_aTextures;
};
//! представление текстуры
struct CTexture
{
CTexture(){ m_pTex2d = 0; m_pTexCube = 0; m_idDir = -1; }
~CTexture(){ mem_release(m_pTex2d); mem_release(m_pTexCube); }
//! имя
String m_sName;
//! 2д текстура
IGXTexture2D *m_pTex2d;
//! кубическая текстура
IGXTextureCube *m_pTexCube;
//! глобальный id директории
ID m_idDir;
};
//**********************************************************************
//! массив путей с текстурами
Array<CPath*> m_aPathes;
int CurrFirstFree = 0;
//! массив текстур, ключ == идентификатор
Array<CTexture*> m_aTextures;
//! массив id текстур на загрузку
CConcurrentQueue<ID> m_aQueueToLoadIDs;
//**********************************************************************
//! загрузка 2d текстуры
IGXTexture2D* loadTexture2d(const char *szPath);
//! загрузка кубической текстуры
IGXTextureCube* loadTextureCube(const char *szPath);
};
#endif
\ No newline at end of file
......@@ -7,7 +7,6 @@ See the license in LICENSE
#include "sxgcore.h"
#include <gcore/shader.h>
#include <gcore/loadertextures.h>
#include <gcore/bound.h>
#include <gcore/camera.h>
......@@ -28,7 +27,6 @@ HWND g_hWnd = NULL;
IGXVertexDeclaration *g_pStaticVertexDecl = 0;
CShaderManager *g_pManagerShaders = 0;
CLoaderTextures *g_pManagerTextures = 0;
IGXRenderBuffer *g_pScreenTextureRB = 0;
IGXBlendState *g_pToneMappingBS = NULL;
IGXSamplerState *g_pSamplerFilterPoint = NULL;
......@@ -49,7 +47,6 @@ void GCoreInit(SXWINDOW hWnd, int iWidth, int iHeight, bool isWindowed)
InitFullScreenQuad();
g_pManagerShaders = new CShaderManager();
g_pManagerTextures = new CLoaderTextures();
InitToneMappingStates();
GXVertexElement oLayoutStatic[] =
......@@ -115,7 +112,6 @@ SX_LIB_API void SGCore_AKill()
SG_PRECOND(_VOID);
mem_delete(g_pManagerShaders);
mem_delete(g_pManagerTextures);
mem_release(g_pScreenTextureRB);
......@@ -228,29 +224,6 @@ SX_LIB_API bool SGCore_ShaderFileExists(const char *szName)
//##########################################################################
SX_LIB_API ID SGCore_LoadTexCreate(const char *szName, IGXTexture2D *pTex)
{
SG_PRECOND(-1);
return g_pManagerTextures->create(szName, pTex);
}
SX_LIB_API IGXTexture2D* SGCore_LoadTexGetTex(ID idTexture)
{
SG_PRECOND(0);
return g_pManagerTextures->getTexture2d(idTexture);
}
SX_LIB_API void SGCore_LoadTexSetTex(ID idTexture, IGXTexture2D *pTexture)
{
SG_PRECOND(_VOID);
g_pManagerTextures->setTexture2d(idTexture, pTexture);
}
//##########################################################################
SX_LIB_API void SGCore_FCreateCone(float fTopRadius, float fBottomRadius, float fHeight, IMesh ** ppMesh, UINT iSideCount)
{
SG_PRECOND(_VOID);
......
......@@ -247,35 +247,6 @@ SX_LIB_API void SGCore_ShaderUnBind();
Например: mtl_tex.dds - лежит по загружаемому пути: /mtl/mtl_tex.dds
@{*/
/*! \name Ограничения на размеры
@{*/
//! максимальный размер имени директории (до _)
#define SXGC_LOADTEX_MAX_SIZE_DIR 64
//! максимальный размер имени с расширением (после _)
#define SXGC_LOADTEX_MAX_SIZE_NAME 64
//! общий максимальный размер имени текстуры с расширением
#define SXGC_LOADTEX_MAX_SIZE_DIRNAME (SXGC_LOADTEX_MAX_SIZE_DIR + SXGC_LOADTEX_MAX_SIZE_NAME)
//! максимальный размер пути до файла текстуры (без имени файла)
#define SXGC_LOADTEX_MAX_SIZE_STDPATH 256
//! максимальный размер полного пути до текстуры (включая имя текстуры)
#define SXGC_LOADTEX_MAX_SIZE_FULLPATH (SXGC_LOADTEX_MAX_SIZE_STDPATH + SXGC_LOADTEX_MAX_SIZE_DIRNAME)
//! количество mipmap уровней в загружаемых текстурах
#define SXGC_LOADTEX_COUNT_MIPMAP 5
/*! формат в который будут преобразованы загружаемые текстуры
\warning если установить формат со сжатием то необходимо следовать всем правилам оформления текстур для данного формата
*/
#define SXGC_LOADTEX_FORMAT_TEX D3DFMT_FROM_FILE
//!@}
//**************************************************************************
/*! \name Типы материалов
......@@ -297,24 +268,7 @@ SX_LIB_API void SGCore_ShaderUnBind();
//!@}
//! типы текстур
enum LOAD_TEXTURE_TYPE
{
//! загружаемая
LOAD_TEXTURE_TYPE_LOAD,
//! неудаляемая загружаемая
LOAD_TEXTURE_TYPE_CONST,
//! созданная пользователем
LOAD_TEXTURE_TYPE_CUSTOM,
/*! самоопределение типа, на тот случай когда обновляем текстуру которая точно есть.
Если определить этот тип, а внутри у текстуры на самом деле нет типа (скорее всего нет текстуры)
то будет определен LOAD_TEXTURE_TYPE_LOAD
*/
LOAD_TEXTURE_TYPE_SELF,
};
//!@} sxgcore_loadtex
enum SHADER_CONST_REGISTER
{
......@@ -324,20 +278,6 @@ enum SHADER_CONST_REGISTER
SCR_SUBSET = 0
};
//**************************************************************************
/*! создать место для текстуры tex и присвоить ей имя name, возвращает id
\warning создавать текстур необходимо в managed pool (D3DPOOL_MANAGED) ибо обработка потери и восстановления устройства сюда не приходит
*/
SX_LIB_API ID SGCore_LoadTexCreate(const char *szName, IGXTexture2D *pTexture);
//! возвращает текстуру по id
SX_LIB_API IGXTexture2D* SGCore_LoadTexGetTex(ID idTexture);
SX_LIB_API void SGCore_LoadTexSetTex(ID idTexture, IGXTexture2D *pTexture);
//!@} sxgcore_loadtex
//#############################################################################
/*! Меш
......
......@@ -69,7 +69,7 @@ public:
virtual bool XMETHODCALLTYPE getTexture(const char *szName, IXTexture **ppTexture) = 0;
//! Добавить текстуру
virtual void XMETHODCALLTYPE addTexture(const char *szName, IGXTexture2D *pTexture) = 0;
//virtual void XMETHODCALLTYPE addTexture(const char *szName, IGXTexture2D *pTexture) = 0;
//! Установить материал для отрисовки
virtual void XMETHODCALLTYPE bindMaterial(IXMaterial *pMaterial, IXShaderVariant *pShaderVariant = NULL) = 0;
......
......@@ -147,11 +147,11 @@ bool XMETHODCALLTYPE CMaterialSystem::getTexture(const char *szName, IXTexture *
return(false);
}
void XMETHODCALLTYPE CMaterialSystem::addTexture(const char *szName, IGXTexture2D *pTexture)
{
pTexture->AddRef();
SGCore_LoadTexCreate(szName, pTexture);
}
//void XMETHODCALLTYPE CMaterialSystem::addTexture(const char *szName, IGXTexture2D *pTexture)
//{
// pTexture->AddRef();
// SGCore_LoadTexCreate(szName, pTexture);
//}
void XMETHODCALLTYPE CMaterialSystem::setWorld(const SMMATRIX &mWorld)
{
......
......@@ -74,7 +74,7 @@ public:
bool XMETHODCALLTYPE loadTexture(const char *szName, IXTexture **ppTexture) override;
bool XMETHODCALLTYPE getTexture(const char *szName, IXTexture **ppTexture) override;
void XMETHODCALLTYPE addTexture(const char *szName, IGXTexture2D *pTexture) override;
//void XMETHODCALLTYPE addTexture(const char *szName, IGXTexture2D *pTexture) override;
void XMETHODCALLTYPE bindMaterial(IXMaterial *pMaterial, IXShaderVariant *pShaderVariant = NULL) override;
void XMETHODCALLTYPE bindTexture(IXTexture *pTexture, UINT slot = 0) override;
......
......@@ -61,10 +61,14 @@ CMaterials::CMaterials()
tmpMtlDefaultLight->m_oMainGraphics.m_isUnlit = true;
tmpMtlDefaultLight->m_oLightParam.m_pTexParam = NULL;
tmpMtlDefaultLight->m_oLightParam.m_isTextureParam = false;
if(mtrl_data::pDXDevice)
{
tmpMtlDefaultLight->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
}
tmpMtlDefaultLight->m_oLightParam.m_fRoughness = MTL_LIGHTING_DEFAULT_ROUGHNESS;
tmpMtlDefaultLight->m_oLightParam.m_fF0 = MTL_LIGHTING_DEFAULT_F0;
tmpMtlDefaultLight->m_oLightParam.m_fThickness = MTL_LIGHTING_DEFAULT_THICKNESS;
//if(mtrl_data::pDXDevice)
//{
// tmpMtlDefaultLight->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
//}
tmpumtl->m_pMtrl->m_oMainGraphics.updateShaderKit(true);
m_idMtrlDefLight = addUnitMaterial(tmpumtl);
......@@ -90,10 +94,13 @@ CMaterials::CMaterials()
tmpumtl->m_pMtrl->m_oLightParam.m_pTexParam = NULL;
tmpumtl->m_pMtrl->m_oLightParam.m_isTextureParam = false;
if(mtrl_data::pDXDevice)
{
tmpumtl->m_pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
}
tmpumtl->m_pMtrl->m_oLightParam.m_fRoughness = MTL_LIGHTING_DEFAULT_ROUGHNESS;
tmpumtl->m_pMtrl->m_oLightParam.m_fF0 = MTL_LIGHTING_DEFAULT_F0;
tmpumtl->m_pMtrl->m_oLightParam.m_fThickness = MTL_LIGHTING_DEFAULT_THICKNESS;
//if(mtrl_data::pDXDevice)
//{
// tmpumtl->m_pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
//}
tmpumtl->m_pMtrl->m_oMainGraphics.updateShaderKit(true);
m_idMtrlDefStatic = addUnitMaterial(tmpumtl);
......@@ -116,10 +123,13 @@ CMaterials::CMaterials()
tmpumtl->m_pMtrl->m_oLightParam.m_pTexParam = NULL;
tmpumtl->m_pMtrl->m_oLightParam.m_isTextureParam = false;
if(mtrl_data::pDXDevice)
{
tmpumtl->m_pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
}
tmpumtl->m_pMtrl->m_oLightParam.m_fRoughness = MTL_LIGHTING_DEFAULT_ROUGHNESS;
tmpumtl->m_pMtrl->m_oLightParam.m_fF0 = MTL_LIGHTING_DEFAULT_F0;
tmpumtl->m_pMtrl->m_oLightParam.m_fThickness = MTL_LIGHTING_DEFAULT_THICKNESS;
//if(mtrl_data::pDXDevice)
//{
// tmpumtl->m_pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
//}
tmpumtl->m_pMtrl->m_oMainGraphics.updateShaderKit(true);
m_idMtrlDefTree = addUnitMaterial(tmpumtl);
......@@ -142,10 +152,13 @@ CMaterials::CMaterials()
tmpumtl->m_pMtrl->m_oLightParam.m_pTexParam = NULL;
tmpumtl->m_pMtrl->m_oLightParam.m_isTextureParam = false;
if(mtrl_data::pDXDevice)
{
tmpumtl->m_pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
}
tmpumtl->m_pMtrl->m_oLightParam.m_fRoughness = MTL_LIGHTING_DEFAULT_ROUGHNESS;
tmpumtl->m_pMtrl->m_oLightParam.m_fF0 = MTL_LIGHTING_DEFAULT_F0;
tmpumtl->m_pMtrl->m_oLightParam.m_fThickness = MTL_LIGHTING_DEFAULT_THICKNESS;
//if(mtrl_data::pDXDevice)
//{
// tmpumtl->m_pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
//}
tmpumtl->m_pMtrl->m_oMainGraphics.updateShaderKit(true);
m_idMtrlDefGrass = addUnitMaterial(tmpumtl);
......@@ -170,10 +183,13 @@ CMaterials::CMaterials()
tmpumtl->m_pMtrl->m_oLightParam.m_pTexParam = NULL;
tmpumtl->m_pMtrl->m_oLightParam.m_isTextureParam = false;
if(mtrl_data::pDXDevice)
{
tmpumtl->m_pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
}
tmpumtl->m_pMtrl->m_oLightParam.m_fRoughness = MTL_LIGHTING_DEFAULT_ROUGHNESS;
tmpumtl->m_pMtrl->m_oLightParam.m_fF0 = MTL_LIGHTING_DEFAULT_F0;
tmpumtl->m_pMtrl->m_oLightParam.m_fThickness = MTL_LIGHTING_DEFAULT_THICKNESS;
//if(mtrl_data::pDXDevice)
//{
// tmpumtl->m_pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(MTL_LIGHTING_DEFAULT_ROUGHNESS, MTL_LIGHTING_DEFAULT_F0, MTL_LIGHTING_DEFAULT_THICKNESS);
//}
tmpumtl->m_pMtrl->m_oMainGraphics.updateShaderKit(true);
m_idMtrlDefSkin = addUnitMaterial(tmpumtl);
......@@ -323,7 +339,7 @@ CMaterials::CMaterial::CMainGraphics::СDataShader::~СDataShader()
CMaterials::CMaterial::CLightParam::CLightParam()
{
m_pTexParam = NULL;
m_idTexParamHand = -1;
//m_idTexParamHand = -1;
m_fRoughness = 0.f;
m_fF0 = 0.f;
......@@ -686,7 +702,7 @@ bool CMaterials::loadMtl(const char *szName, CMaterial **ppMtrl, XSHADER_DEFAULT
if (pConfig->keyExists(sName.c_str(), "density"))
pMtrl->m_oPhysics.m_fDensity = String(pConfig->getKey(sName.c_str(), "density")).toDouble();
pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(pMtrl->m_oLightParam.m_fRoughness, pMtrl->m_oLightParam.m_fF0, pMtrl->m_oLightParam.m_fThickness);
//pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(pMtrl->m_oLightParam.m_fRoughness, pMtrl->m_oLightParam.m_fF0, pMtrl->m_oLightParam.m_fThickness);
//говорим что не установлено использовать ли текстуру или нет
int istexparam = -1;
......@@ -843,26 +859,6 @@ bool CMaterials::loadMtl(const char *szName, CMaterial **ppMtrl, XSHADER_DEFAULT
return false;
}
ID CMaterials::createTexParamLighting(float roughness, float f0, float thickness)
{
uint32_t tmpColor = GX_COLOR_ARGB(255, DWORD(roughness*255.f), DWORD(f0*255.f), DWORD(thickness*255.f));
IGXTexture2D* TexMaterial = NULL;
char nametex[64];
sprintf(nametex, "%c_%d_%d_%d", MTL_VIRTUAL_DIR_HAND_MTL, m_aUnitMtrls.size(), rand() % 9999, rand() % 9999);
if(Core_GetIXCore()->isOnMainThread())
{
TexMaterial = mtrl_data::pDXDevice->createTexture2D(1, 1, 1, 0, GXFMT_A8R8G8B8, &tmpColor);
return(SGCore_LoadTexCreate(nametex, TexMaterial));
}
// schedule to create
ID idTex = SGCore_LoadTexCreate(nametex, TexMaterial);
m_queueLoadTexparam.push({tmpColor, idTex});
return(idTex);
}
void CMaterials::createMtl(const char* name, CMaterial** mtl, XSHADER_DEFAULT_DESC *pDefaultShaders, UINT uVariantCount, XSHADER_VARIANT_DESC *pVariantsDesc)
{
CMaterial* pMtrl = *mtl;
......@@ -889,7 +885,7 @@ void CMaterials::createMtl(const char* name, CMaterial** mtl, XSHADER_DEFAULT_DE
pMtrl->m_oLightParam.m_pTexParam = NULL;
pMtrl->m_oLightParam.m_isTextureParam = false;
pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(pMtrl->m_oLightParam.m_fRoughness, pMtrl->m_oLightParam.m_fF0, pMtrl->m_oLightParam.m_fThickness);
//pMtrl->m_oLightParam.m_idTexParamHand = createTexParamLighting(pMtrl->m_oLightParam.m_fRoughness, pMtrl->m_oLightParam.m_fF0, pMtrl->m_oLightParam.m_fThickness);
//char path[1024];
char tmp_name[256];
......@@ -1250,13 +1246,6 @@ void CMaterials::update(UINT timeDelta)
m_uiCurrTimeDelta = timeDelta;
m_uiCountTimeDelta += timeDelta;
LoadTexparamData tdata;
while(m_queueLoadTexparam.tryPop(tdata))
{
auto pTexture = mtrl_data::pDXDevice->createTexture2D(1, 1, 1, 0, GXFMT_A8R8G8B8, &(tdata.uData));
SGCore_LoadTexSetTex(tdata.idTex, pTexture);
}
}
void CMaterials::setMainTexture(ID slot, ID id)
......@@ -2027,10 +2016,14 @@ void CMaterials::render(ID id, const float4x4 *pWorld, const float4 *pColor)
//иначе если берем параметры из ... редактора
else //if (!pMtrl->m_oLightParam.m_isTextureParam)
{
if (pMtrl->m_oLightParam.m_fOldRoughness != pMtrl->m_oLightParam.m_fRoughness || pMtrl->m_oLightParam.m_fOldF0 != pMtrl->m_oLightParam.m_fF0 || pMtrl->m_oLightParam.m_fOldThickness != pMtrl->m_oLightParam.m_fThickness)
if(!pMtrl->m_oLightParam.m_pTexParamHand || pMtrl->m_oLightParam.m_fOldRoughness != pMtrl->m_oLightParam.m_fRoughness || pMtrl->m_oLightParam.m_fOldF0 != pMtrl->m_oLightParam.m_fF0 || pMtrl->m_oLightParam.m_fOldThickness != pMtrl->m_oLightParam.m_fThickness)
{
//блокируем текстуру 1х1 котора¤ есть параметры освещени¤, и запсиываем туда то что настроили
IGXTexture2D* ParamLightModelTex = SGCore_LoadTexGetTex(pMtrl->m_oLightParam.m_idTexParamHand);
if(!pMtrl->m_oLightParam.m_pTexParamHand)
{
pMtrl->m_oLightParam.m_pTexParamHand = mtrl_data::pDXDevice->createTexture2D(1, 1, 1, 0, GXFMT_A8R8G8B8);
}
IGXTexture2D* ParamLightModelTex = pMtrl->m_oLightParam.m_pTexParamHand;
if(ParamLightModelTex)
{
GXCOLOR clr = GX_COLOR_ARGB(255, DWORD(pMtrl->m_oLightParam.m_fRoughness*255.f), DWORD(pMtrl->m_oLightParam.m_fF0*255.f), DWORD(pMtrl->m_oLightParam.m_fThickness*255.f));
......@@ -2043,7 +2036,7 @@ void CMaterials::render(ID id, const float4x4 *pWorld, const float4 *pColor)
}
}
mtrl_data::pDXDevice->setTexture(SGCore_LoadTexGetTex(pMtrl->m_oLightParam.m_idTexParamHand), MTL_TEX_R_PARAM_LIGHT);
mtrl_data::pDXDevice->setTexture(pMtrl->m_oLightParam.m_pTexParamHand, MTL_TEX_R_PARAM_LIGHT);
}
/*else
mtrl_data::pDXDevice->SetTexture(MTL_TEX_R_PARAM_LIGHT, SGCore_LoadTexGetTex(mtrl_data::IDsTexs::NullMaterial));*/
......
......@@ -314,7 +314,7 @@ public:
CTexture *m_pTexParam;
//! текстура с параметрами материала, размер 1х1, параметры взяты из текущей структуры
ID m_idTexParamHand;
IGXTexture2D *m_pTexParamHand = NULL;
//! назначена ли (true) текстура для параметров материала (или данные берем из параметров и кладем в рабочую текстуру)
bool m_isTextureParam;
......@@ -395,7 +395,6 @@ protected:
bool loadMtl(const char *szName, CMaterial **ppMtrl, XSHADER_DEFAULT_DESC *pDefaultShaders, UINT uVariantCount = 0, XSHADER_VARIANT_DESC *pVariantsDesc = NULL);
void createMtl(const char *szName, CMaterial **ppMtrl, XSHADER_DEFAULT_DESC *pDefaultShaders, UINT uVariantCount = 0, XSHADER_VARIANT_DESC *pVariantsDesc = NULL);
ID createTexParamLighting(float fRoughness, float fF0, float fThickness);
void addName(const char *szName, ID id);
ID addUnitMaterial(CUnitMaterial *pUnitMtrl);
......@@ -462,15 +461,6 @@ protected:
ID m_idBeginNonDef;
float4x4 m_mWorld, m_mViewProj, m_mWorldTrans, m_mViewTrans, m_mProjTrans;
private:
struct LoadTexparamData
{
UINT uData;
ID idTex;
};
CConcurrentQueue<LoadTexparamData> m_queueLoadTexparam;
};
#endif
\ No newline at end of file
#endif
......@@ -84,10 +84,10 @@ SX_LIB_API void SMtrl_Update(
@{*/
/*! максимальная длина имени директории материала */
#define MTL_MAX_SIZE_DIR SXGC_LOADTEX_MAX_SIZE_DIR
#define MTL_MAX_SIZE_DIR 64
/*! максимальная длина имени материала (без директории) */
#define MTL_MAX_SIZE_NAME SXGC_LOADTEX_MAX_SIZE_NAME
#define MTL_MAX_SIZE_NAME 64
/*! максимальное количество обновлений статических отражений, в первый момент рендера */
#define MTL_REF_UPDATE_MAX_COUNT_FOR_STATIC 3
......
......@@ -15,9 +15,6 @@ namespace gdata
DS_RT FinalImage = DS_RT_SCENELIGHT;
ICamera *pCamera = 0;
ID idSelectTex = -1;
ID idWhiteTex = -1;
ID idDashedTex = -1;
float2_t vNearFar = float2_t(0.025, 400);
float fProjFov = SM_PIDIV4;
......
......@@ -46,12 +46,7 @@ namespace gdata
//!< камера для которой будет рендер
extern ICamera *pCamera;
//! id текстуры с цветмо выделения (для редакторов)
extern ID idSelectTex;
extern ID idWhiteTex;
extern ID idDashedTex;
//! значение дальней и ближней плоскостей отсечения
extern float2_t vNearFar;
......
......@@ -69,31 +69,6 @@ SX_LIB_API void SRender_0Create(const char *szName, HWND hWnd3D, HWND hWndParent
//***********************
uint32_t tmpColor = GX_COLOR_ARGB(255, 255, 255, 0);
IGXTexture2D* SelectMaterial = SGCore_GetDXDevice()->createTexture2D(1, 1, 1, 0, GXFMT_A8R8G8B8, &tmpColor);
//SGCore_LoadTexLoadTextures();
gdata::idSelectTex = SGCore_LoadTexCreate("select_material__", SelectMaterial);
tmpColor = GX_COLOR_ARGB(255, 255, 255, 255);
IGXTexture2D* pWhiteMaterial = SGCore_GetDXDevice()->createTexture2D(1, 1, 1, 0, GXFMT_A8R8G8B8, &tmpColor);
gdata::idWhiteTex = SGCore_LoadTexCreate("white_material__", pWhiteMaterial);
//SGCore_LoadTexLoadTextures();
GXCOLOR w = GX_COLOR_ARGB(255, 255, 255, 255);
GXCOLOR t = GX_COLOR_ARGB(0, 255, 255, 255);
GXCOLOR colorData[] = {
t, t, t, w, w, w,
w, t, t, t, w, w,
w, w, t, t, t, w,
w, w, w, t, t, t,
t, w, w, w, t, t,
t, t, w, w, w, t
};
IGXTexture2D* pDashedMaterial = SGCore_GetDXDevice()->createTexture2D(6, 6, 1, 0, GXFMT_A8R8G8B8, colorData);
gdata::idDashedTex = SGCore_LoadTexCreate("dashed_material__", pDashedMaterial);
g_pPipeline = new CRenderPipeline(SGCore_GetDXDevice());
Core_GetIXCore()->setRenderPipeline(g_pPipeline);
......@@ -153,23 +128,6 @@ SX_LIB_API ICamera* SRender_GetCamera()
return gdata::pCamera;
}
//**************************************************************************
SX_LIB_API ID SRender_EditorGetSelectTex()
{
return gdata::idSelectTex;
}
SX_LIB_API ID SRender_EditorGetWhiteTex()
{
return gdata::idWhiteTex;
}
SX_LIB_API ID SRender_EditorGetDashedTex()
{
return gdata::idDashedTex;
}
//##########################################################################
......
......@@ -201,17 +201,6 @@ SX_LIB_API void SRender_SetCamera(ICamera *pCamera);
//! возвращает текущую камеру
SX_LIB_API ICamera* SRender_GetCamera();
//**************************************************************************
//! возвращает id текстуры которая содержит цвет выделения
SX_LIB_API ID SRender_EditorGetSelectTex();
//! возвращает id текстуры которая содержит белый цвет
SX_LIB_API ID SRender_EditorGetWhiteTex();
//! возвращает id текстуры которая содержит полосы
SX_LIB_API ID SRender_EditorGetDashedTex();
//##########################################################################
//! обработка потери и восстановление устройства, isSetWindowSize - устанавливать ли размеры окна (сделано для редакторов)
......
......@@ -70,6 +70,8 @@ IGXDepthStencilSurface *g_BottomRightDepthStencilSurface = NULL;
IGXDepthStencilSurface *g_pGuiDepthStencilSurface = NULL;
IGXDepthStencilState *g_pDSNoZ;
IGXTexture2D *g_pDashedMaterial = NULL;
void XReleaseViewports();
void XInitViewports();