summaryrefslogtreecommitdiff
path: root/Runtime/Terrain/SplatMaterials.h
blob: 27b6696ea4507cbe4a05ca6a9840a327baf28616 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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