Added alpha-mapping support
Former-commit-id: ba4598e9e5efc47e04e72dc709d64d214d77e9a1
This commit is contained in:
@@ -21,6 +21,36 @@ class NzStaticMesh;
|
||||
class NAZARA_API NzRenderQueue
|
||||
{
|
||||
public:
|
||||
NzRenderQueue() = default;
|
||||
~NzRenderQueue() = default;
|
||||
|
||||
void Clear();
|
||||
|
||||
struct SkeletalData
|
||||
{
|
||||
NzMatrix4f transformMatrix;
|
||||
|
||||
///TODO: Déplacer vers un container séparé qui ne serait pas sujet à Clear();
|
||||
std::vector<NzMeshVertex> skinnedVertices;
|
||||
};
|
||||
|
||||
struct TransparentModel
|
||||
{
|
||||
NzMatrix4f transformMatrix;
|
||||
NzMaterial* material;
|
||||
};
|
||||
|
||||
struct TransparentSkeletalModel : public TransparentModel
|
||||
{
|
||||
///TODO: Déplacer vers un container séparé qui ne serait pas sujet à Clear();
|
||||
std::vector<NzMeshVertex> skinnedVertices;
|
||||
};
|
||||
|
||||
struct TransparentStaticModel : public TransparentModel
|
||||
{
|
||||
NzStaticMesh* mesh;
|
||||
};
|
||||
|
||||
struct MaterialComparator
|
||||
{
|
||||
bool operator()(const NzMaterial* mat1, const NzMaterial* mat2);
|
||||
@@ -36,24 +66,13 @@ class NAZARA_API NzRenderQueue
|
||||
bool operator()(const NzStaticMesh* subMesh1, const NzStaticMesh* subMesh2);
|
||||
};
|
||||
|
||||
NzRenderQueue() = default;
|
||||
~NzRenderQueue() = default;
|
||||
|
||||
void Clear();
|
||||
|
||||
struct SkeletalData
|
||||
{
|
||||
NzMatrix4f transformMatrix;
|
||||
|
||||
///TODO: Déplacer vers un container séparé qui ne serait pas sujer à Clear();
|
||||
std::vector<NzMeshVertex> skinnedVertices;
|
||||
};
|
||||
|
||||
typedef std::map<NzSkeletalMesh*, std::vector<SkeletalData>, SkeletalMeshComparator> SkeletalMeshContainer;
|
||||
typedef std::map<NzStaticMesh*, std::vector<NzMatrix4f>, StaticMeshComparator> StaticMeshContainer;
|
||||
|
||||
std::map<NzMaterial*, SkeletalMeshContainer, MaterialComparator> visibleSkeletalModels;
|
||||
std::map<NzMaterial*, StaticMeshContainer, MaterialComparator> visibleStaticModels;
|
||||
std::vector<TransparentSkeletalModel> visibleTransparentSkeletalModels;
|
||||
std::vector<TransparentStaticModel> visibleTransparentStaticModels;
|
||||
std::vector<const NzDrawable*> otherDrawables;
|
||||
std::vector<const NzLight*> directionnalLights;
|
||||
std::vector<const NzLight*> visibleLights;
|
||||
|
||||
@@ -149,15 +149,16 @@ enum nzShaderFlags
|
||||
{
|
||||
nzShaderFlags_None = 0,
|
||||
|
||||
nzShaderFlags_Deferred = 0x001,
|
||||
nzShaderFlags_DiffuseMapping = 0x002,
|
||||
nzShaderFlags_EmissiveMapping = 0x004,
|
||||
nzShaderFlags_FlipUVs = 0x008,
|
||||
nzShaderFlags_Instancing = 0x010,
|
||||
nzShaderFlags_Lighting = 0x020,
|
||||
nzShaderFlags_NormalMapping = 0x040,
|
||||
nzShaderFlags_ParallaxMapping = 0x080,
|
||||
nzShaderFlags_SpecularMapping = 0x100
|
||||
nzShaderFlags_AlphaMapping = 0x001,
|
||||
nzShaderFlags_Deferred = 0x002,
|
||||
nzShaderFlags_DiffuseMapping = 0x004,
|
||||
nzShaderFlags_EmissiveMapping = 0x008,
|
||||
nzShaderFlags_FlipUVs = 0x010,
|
||||
nzShaderFlags_Instancing = 0x020,
|
||||
nzShaderFlags_Lighting = 0x040,
|
||||
nzShaderFlags_NormalMapping = 0x080,
|
||||
nzShaderFlags_ParallaxMapping = 0x100,
|
||||
nzShaderFlags_SpecularMapping = 0x200
|
||||
};
|
||||
|
||||
enum nzShaderLanguage
|
||||
@@ -174,6 +175,7 @@ enum nzShaderUniform
|
||||
{
|
||||
nzShaderUniform_CameraPosition,
|
||||
nzShaderUniform_LightCount,
|
||||
nzShaderUniform_MaterialAlphaMap,
|
||||
nzShaderUniform_MaterialAmbient,
|
||||
nzShaderUniform_MaterialDiffuse,
|
||||
nzShaderUniform_MaterialDiffuseMap,
|
||||
|
||||
@@ -53,6 +53,7 @@ class NAZARA_API NzMaterial : public NzResource
|
||||
NzColor GetAmbientColor() const;
|
||||
const NzShader* GetCustomShader() const;
|
||||
NzColor GetDiffuseColor() const;
|
||||
NzTexture* GetAlphaMap() const;
|
||||
NzTexture* GetDiffuseMap() const;
|
||||
NzTextureSampler& GetDiffuseSampler();
|
||||
const NzTextureSampler& GetDiffuseSampler() const;
|
||||
@@ -85,6 +86,8 @@ class NAZARA_API NzMaterial : public NzResource
|
||||
|
||||
void Reset();
|
||||
|
||||
bool SetAlphaMap(const NzString& texturePath);
|
||||
void SetAlphaMap(NzTexture* map);
|
||||
void SetAmbientColor(const NzColor& ambient);
|
||||
void SetDiffuseColor(const NzColor& diffuse);
|
||||
bool SetDiffuseMap(const NzString& texturePath);
|
||||
@@ -128,6 +131,7 @@ class NAZARA_API NzMaterial : public NzResource
|
||||
NzTextureSampler m_diffuseSampler;
|
||||
NzTextureSampler m_specularSampler;
|
||||
mutable NzShaderConstRef m_customShader;
|
||||
NzTextureRef m_alphaMap;
|
||||
NzTextureRef m_diffuseMap;
|
||||
NzTextureRef m_emissiveMap;
|
||||
NzTextureRef m_heightMap;
|
||||
|
||||
Reference in New Issue
Block a user