diff options
Diffstat (limited to 'Runtime/Terrain/SplatMaterials.h')
-rw-r--r-- | Runtime/Terrain/SplatMaterials.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Runtime/Terrain/SplatMaterials.h b/Runtime/Terrain/SplatMaterials.h new file mode 100644 index 0000000..27b6696 --- /dev/null +++ b/Runtime/Terrain/SplatMaterials.h @@ -0,0 +1,41 @@ +#pragma once +#include "Configuration/UnityConfigure.h" + +#if ENABLE_TERRAIN + +#include "TerrainData.h" +#include "Runtime/Shaders/Material.h" +#include "Runtime/Shaders/Shader.h" + +enum{ + kTerrainShaderBaseMap, + kTerrainShaderFirst, + kTerrainShaderAdd, + kTerrainShaderCount +}; + + +class SplatMaterials +{ +public: + SplatMaterials (PPtr<TerrainData> terrain); + ~SplatMaterials (); + + Material** GetMaterials (Material* templateMat, int &materialCount); + Material* GetSplatBaseMaterial (Material* templateMat); + void Cleanup (); + +private: + void LoadSplatShaders (Material* templateMat); + void SetupSplat (Material &m, int splatIndex, int index, bool setNormalMap); + +private: + PPtr<TerrainData> m_TerrainData; + Shader *m_Shaders[kTerrainShaderCount]; + + Material* m_AllocatedMaterials[32]; + Material* m_BaseMapMaterial; + Material* m_CurrentTemplateMaterial; +}; + +#endif // ENABLE_TERRAIN |