Browse Source

Code cleanup.

Lasse Öörni 14 năm trước cách đây
mục cha
commit
bcd3329c60

+ 14 - 16
Engine/Graphics/PixelShader.cpp

@@ -45,10 +45,7 @@ PixelShader::PixelShader(Context* context) :
     GPUObject(GetSubsystem<Graphics>()),
     isSM3_(false)
 {
-    for (unsigned i = 0; i < MAX_PS_PARAMETERS; ++i)
-        useParameter_[i] = false;
-    for (unsigned i = 0; i < MAX_TEXTURE_UNITS; ++i)
-        useTextureUnit_[i] = false;
+    ClearParameters();
 }
 
 PixelShader::~PixelShader()
@@ -71,8 +68,6 @@ bool PixelShader::Load(Deserializer& source)
         return false;
     
     unsigned dataSize = source.GetSize();
-    SetMemoryUse(dataSize);
-    
     SharedArrayPtr<unsigned char> buffer(new unsigned char[dataSize]);
     source.Read((void*)buffer.GetPtr(), dataSize);
     
@@ -85,6 +80,7 @@ bool PixelShader::Load(Deserializer& source)
         return false;
     }
     
+    SetMemoryUse(dataSize);
     LoadParameters();
     return true;
 }
@@ -111,19 +107,18 @@ void PixelShader::Release()
         
         ((IDirect3DPixelShader9*)object_)->Release();
         object_ = 0;
+        
+        SetMemoryUse(0);
     }
 }
 
 void PixelShader::LoadParameters()
 {
     ResourceCache* cache = GetSubsystem<ResourceCache>();
-    if ((!cache) || (!graphics_))
-        return;
     
-    std::string shaderPath;
-    std::string shaderName;
-    std::string shaderExt;
+    ClearParameters();
     
+    std::string shaderPath, shaderName, shaderExt;
     SplitPath(GetName(), shaderPath, shaderName, shaderExt);
     
     isSM3_ = (shaderExt.find('3') != std::string::npos);
@@ -165,11 +160,6 @@ void PixelShader::LoadParameters()
         
         if ((name == shaderName) && (type == "ps"))
         {
-            for (unsigned i = 0; i < MAX_PS_PARAMETERS; ++i)
-                useParameter_[i] = false;
-            for (unsigned i = 0; i < MAX_TEXTURE_UNITS; ++i)
-                useTextureUnit_[i] = false;
-            
             XMLElement shaderParamElem = shaderElem.GetChildElement("parameter");
             while (shaderParamElem)
             {
@@ -202,3 +192,11 @@ void PixelShader::LoadParameters()
     
     LOGERROR("Shader " + shaderName + " not found in shader description XML file");
 }
+
+void PixelShader::ClearParameters()
+{
+    for (unsigned i = 0; i < MAX_PS_PARAMETERS; ++i)
+        useParameter_[i] = false;
+    for (unsigned i = 0; i < MAX_TEXTURE_UNITS; ++i)
+        useTextureUnit_[i] = false;
+}

+ 2 - 0
Engine/Graphics/PixelShader.h

@@ -60,6 +60,8 @@ public:
 private:
     /// Load parameters from an XML file
     void LoadParameters();
+    /// Clear parameter and texture unit use flags
+    void ClearParameters();
     
     /// Parameter use flags
     bool useParameter_[MAX_PS_PARAMETERS];

+ 1 - 0
Engine/Graphics/Texture.cpp

@@ -141,6 +141,7 @@ unsigned Texture::GetCompressedD3DFormat(CompressedFormat format)
 void Texture::LoadParameters()
 {
     ResourceCache* cache = GetSubsystem<ResourceCache>();
+    
     std::string texPath, texName, texExt;
     SplitPath(GetName(), texPath, texName, texExt);
     std::string xmlName = texPath + texName + ".xml";

+ 3 - 6
Engine/Graphics/TextureCube.cpp

@@ -164,9 +164,7 @@ bool TextureCube::Load(Deserializer& source)
     // If over the texture budget, see if materials can be freed to allow textures to be freed
     CheckTextureBudget(GetTypeStatic());
     
-    std::string texPath;
-    std::string texName;
-    std::string texExt;
+    std::string texPath, texName, texExt;
     SplitPath(GetName(), texPath, texName, texExt);
     
     SharedPtr<XMLFile> xml(new XMLFile(context_));
@@ -181,9 +179,8 @@ bool TextureCube::Load(Deserializer& source)
     while ((faceElem) && (faces < MAX_CUBEMAP_FACES))
     {
         std::string name = faceElem.GetString("name");
-        std::string faceTexPath;
-        std::string faceTexName;
-        std::string faceTexExt;
+        
+        std::string faceTexPath, faceTexName, faceTexExt;
         SplitPath(name, faceTexPath, faceTexName, faceTexExt);
         // If path is empty, add the XML file path
         if (faceTexPath.empty())

+ 12 - 11
Engine/Graphics/VertexShader.cpp

@@ -45,8 +45,7 @@ VertexShader::VertexShader(Context* context) :
     GPUObject(GetSubsystem<Graphics>()),
     isSM3_(false)
 {
-    for (unsigned i = 0; i < MAX_VS_PARAMETERS; ++i)
-        useParameter_[i] = false;
+    ClearParameters();
 }
 
 VertexShader::~VertexShader()
@@ -69,7 +68,6 @@ bool VertexShader::Load(Deserializer& source)
         return false;
     
     unsigned dataSize = source.GetSize();
-    SetMemoryUse(dataSize);
     
     SharedArrayPtr<unsigned char> buffer(new unsigned char[dataSize]);
     source.Read((void*)buffer.GetPtr(), dataSize);
@@ -83,6 +81,7 @@ bool VertexShader::Load(Deserializer& source)
         return false;
     }
     
+    SetMemoryUse(dataSize);
     LoadParameters();
     return true;
 }
@@ -109,19 +108,18 @@ void VertexShader::Release()
         
         ((IDirect3DVertexShader9*)object_)->Release();
         object_ = 0;
+        
+        SetMemoryUse(0);
     }
 }
 
 void VertexShader::LoadParameters()
 {
     ResourceCache* cache = GetSubsystem<ResourceCache>();
-    if ((!cache) || (!graphics_))
-        return;
     
-    std::string shaderPath;
-    std::string shaderName;
-    std::string shaderExt;
+    ClearParameters();
     
+    std::string shaderPath, shaderName, shaderExt;
     SplitPath(GetName(), shaderPath, shaderName, shaderExt);
     
     isSM3_ = (shaderExt.find('3') != std::string::npos);
@@ -163,9 +161,6 @@ void VertexShader::LoadParameters()
         
         if ((name == shaderName) && (type == "vs"))
         {
-            for (unsigned i = 0; i < MAX_VS_PARAMETERS; ++i)
-                useParameter_[i] = false;
-            
             XMLElement shaderParamElem = shaderElem.GetChildElement("parameter");
             while (shaderParamElem)
             {
@@ -185,3 +180,9 @@ void VertexShader::LoadParameters()
     
     LOGERROR("Shader " + shaderName + " not found in shader description XML file");
 }
+
+void VertexShader::ClearParameters()
+{
+    for (unsigned i = 0; i < MAX_VS_PARAMETERS; ++i)
+        useParameter_[i] = false;
+}

+ 2 - 2
Engine/Graphics/VertexShader.h

@@ -59,8 +59,8 @@ public:
 private:
     /// Load parameters from an XML file
     void LoadParameters();
-    /// Initialize parameter map with known values
-    static void InitializeParameters();
+    /// Clear parameter use flags
+    void ClearParameters();
     
     /// Parameter use flags
     bool useParameter_[MAX_VS_PARAMETERS];