Make mesh able to carry material informations
- Move OBJ Loader to Utility module, where it belongs - Change Mesh material informations from a path to a parameterlist - Improve Mesh code Former-commit-id: 3c18901133fa5ac8281269822f6e2650ddcefd2d
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include <Nazara/Renderer/Texture.hpp>
|
||||
#include <Nazara/Renderer/TextureSampler.hpp>
|
||||
#include <Nazara/Renderer/UberShader.hpp>
|
||||
#include <Nazara/Utility/MaterialData.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
@@ -62,6 +63,8 @@ namespace Nz
|
||||
|
||||
const Shader* Apply(UInt32 shaderFlags = 0, UInt8 textureUnit = 0, UInt8* lastUsedUnit = nullptr) const;
|
||||
|
||||
void BuildFromParameters(const ParameterList& matData, const MaterialParams& matParams = MaterialParams());
|
||||
|
||||
void Enable(RendererParameter renderParameter, bool enable);
|
||||
void EnableAlphaTest(bool alphaTest);
|
||||
void EnableDepthSorting(bool depthSorting);
|
||||
|
||||
@@ -19,40 +19,6 @@ namespace Nz
|
||||
AttachmentPoint_Max = AttachmentPoint_Stencil
|
||||
};
|
||||
|
||||
enum BlendFunc
|
||||
{
|
||||
BlendFunc_DestAlpha,
|
||||
BlendFunc_DestColor,
|
||||
BlendFunc_SrcAlpha,
|
||||
BlendFunc_SrcColor,
|
||||
BlendFunc_InvDestAlpha,
|
||||
BlendFunc_InvDestColor,
|
||||
BlendFunc_InvSrcAlpha,
|
||||
BlendFunc_InvSrcColor,
|
||||
BlendFunc_One,
|
||||
BlendFunc_Zero,
|
||||
|
||||
BlendFunc_Max = BlendFunc_Zero
|
||||
};
|
||||
|
||||
enum FaceFilling
|
||||
{
|
||||
FaceFilling_Fill,
|
||||
FaceFilling_Line,
|
||||
FaceFilling_Point,
|
||||
|
||||
FaceFilling_Max = FaceFilling_Point
|
||||
};
|
||||
|
||||
enum FaceSide
|
||||
{
|
||||
FaceSide_Back,
|
||||
FaceSide_Front,
|
||||
FaceSide_FrontAndBack,
|
||||
|
||||
FaceSide_Max = FaceSide_FrontAndBack
|
||||
};
|
||||
|
||||
enum GpuQueryCondition
|
||||
{
|
||||
GpuQueryCondition_Region_NoWait,
|
||||
@@ -124,59 +90,6 @@ namespace Nz
|
||||
RendererBuffer_Max = RendererBuffer_Stencil*2-1
|
||||
};
|
||||
|
||||
enum RendererComparison
|
||||
{
|
||||
RendererComparison_Always,
|
||||
RendererComparison_Equal,
|
||||
RendererComparison_Greater,
|
||||
RendererComparison_GreaterOrEqual,
|
||||
RendererComparison_Less,
|
||||
RendererComparison_LessOrEqual,
|
||||
RendererComparison_Never,
|
||||
RendererComparison_NotEqual,
|
||||
|
||||
RendererComparison_Max = RendererComparison_NotEqual
|
||||
};
|
||||
|
||||
enum RendererParameter
|
||||
{
|
||||
RendererParameter_Blend,
|
||||
RendererParameter_ColorWrite,
|
||||
RendererParameter_DepthBuffer,
|
||||
RendererParameter_DepthWrite,
|
||||
RendererParameter_FaceCulling,
|
||||
RendererParameter_ScissorTest,
|
||||
RendererParameter_StencilTest,
|
||||
|
||||
RendererParameter_Max = RendererParameter_StencilTest
|
||||
};
|
||||
|
||||
enum SamplerFilter
|
||||
{
|
||||
SamplerFilter_Unknown = -1,
|
||||
|
||||
SamplerFilter_Bilinear,
|
||||
SamplerFilter_Nearest,
|
||||
SamplerFilter_Trilinear,
|
||||
|
||||
SamplerFilter_Default,
|
||||
|
||||
SamplerFilter_Max = SamplerFilter_Default
|
||||
};
|
||||
|
||||
enum SamplerWrap
|
||||
{
|
||||
SamplerWrap_Unknown = -1,
|
||||
|
||||
SamplerWrap_Clamp,
|
||||
SamplerWrap_MirroredRepeat,
|
||||
SamplerWrap_Repeat,
|
||||
|
||||
SamplerWrap_Default,
|
||||
|
||||
SamplerWrap_Max = SamplerWrap_Repeat
|
||||
};
|
||||
|
||||
enum ShaderUniform
|
||||
{
|
||||
ShaderUniform_InvProjMatrix,
|
||||
@@ -205,20 +118,6 @@ namespace Nz
|
||||
|
||||
ShaderStageType_Max = ShaderStageType_Vertex
|
||||
};
|
||||
|
||||
enum StencilOperation
|
||||
{
|
||||
StencilOperation_Decrement,
|
||||
StencilOperation_DecrementNoClamp,
|
||||
StencilOperation_Increment,
|
||||
StencilOperation_IncrementNoClamp,
|
||||
StencilOperation_Invert,
|
||||
StencilOperation_Keep,
|
||||
StencilOperation_Replace,
|
||||
StencilOperation_Zero,
|
||||
|
||||
StencilOperation_Max = StencilOperation_Zero
|
||||
};
|
||||
}
|
||||
|
||||
#endif // NAZARA_ENUMS_RENDERER_HPP
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#ifndef NAZARA_RENDERSTATES_HPP
|
||||
#define NAZARA_RENDERSTATES_HPP
|
||||
|
||||
#include <Nazara/Renderer/Enums.hpp>
|
||||
#include <Nazara/Utility/Enums.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
#include <Nazara/Prerequesites.hpp>
|
||||
#include <Nazara/Renderer/Config.hpp>
|
||||
#include <Nazara/Renderer/Enums.hpp>
|
||||
#include <Nazara/Utility/Enums.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
|
||||
@@ -17,6 +17,22 @@ namespace Nz
|
||||
AnimationType_Max = AnimationType_Static
|
||||
};
|
||||
|
||||
enum BlendFunc
|
||||
{
|
||||
BlendFunc_DestAlpha,
|
||||
BlendFunc_DestColor,
|
||||
BlendFunc_SrcAlpha,
|
||||
BlendFunc_SrcColor,
|
||||
BlendFunc_InvDestAlpha,
|
||||
BlendFunc_InvDestColor,
|
||||
BlendFunc_InvSrcAlpha,
|
||||
BlendFunc_InvSrcColor,
|
||||
BlendFunc_One,
|
||||
BlendFunc_Zero,
|
||||
|
||||
BlendFunc_Max = BlendFunc_Zero
|
||||
};
|
||||
|
||||
enum BufferAccess
|
||||
{
|
||||
BufferAccess_DiscardAndWrite,
|
||||
@@ -87,6 +103,24 @@ namespace Nz
|
||||
DataStorage_Max = DataStorage_Software*2-1
|
||||
};
|
||||
|
||||
enum FaceFilling
|
||||
{
|
||||
FaceFilling_Fill,
|
||||
FaceFilling_Line,
|
||||
FaceFilling_Point,
|
||||
|
||||
FaceFilling_Max = FaceFilling_Point
|
||||
};
|
||||
|
||||
enum FaceSide
|
||||
{
|
||||
FaceSide_Back,
|
||||
FaceSide_Front,
|
||||
FaceSide_FrontAndBack,
|
||||
|
||||
FaceSide_Max = FaceSide_FrontAndBack
|
||||
};
|
||||
|
||||
enum ImageType
|
||||
{
|
||||
ImageType_1D,
|
||||
@@ -211,6 +245,73 @@ namespace Nz
|
||||
PrimitiveMode_Max = PrimitiveMode_TriangleFan
|
||||
};
|
||||
|
||||
enum RendererComparison
|
||||
{
|
||||
RendererComparison_Always,
|
||||
RendererComparison_Equal,
|
||||
RendererComparison_Greater,
|
||||
RendererComparison_GreaterOrEqual,
|
||||
RendererComparison_Less,
|
||||
RendererComparison_LessOrEqual,
|
||||
RendererComparison_Never,
|
||||
RendererComparison_NotEqual,
|
||||
|
||||
RendererComparison_Max = RendererComparison_NotEqual
|
||||
};
|
||||
|
||||
enum RendererParameter
|
||||
{
|
||||
RendererParameter_Blend,
|
||||
RendererParameter_ColorWrite,
|
||||
RendererParameter_DepthBuffer,
|
||||
RendererParameter_DepthWrite,
|
||||
RendererParameter_FaceCulling,
|
||||
RendererParameter_ScissorTest,
|
||||
RendererParameter_StencilTest,
|
||||
|
||||
RendererParameter_Max = RendererParameter_StencilTest
|
||||
};
|
||||
|
||||
enum SamplerFilter
|
||||
{
|
||||
SamplerFilter_Unknown = -1,
|
||||
|
||||
SamplerFilter_Bilinear,
|
||||
SamplerFilter_Nearest,
|
||||
SamplerFilter_Trilinear,
|
||||
|
||||
SamplerFilter_Default,
|
||||
|
||||
SamplerFilter_Max = SamplerFilter_Default
|
||||
};
|
||||
|
||||
enum SamplerWrap
|
||||
{
|
||||
SamplerWrap_Unknown = -1,
|
||||
|
||||
SamplerWrap_Clamp,
|
||||
SamplerWrap_MirroredRepeat,
|
||||
SamplerWrap_Repeat,
|
||||
|
||||
SamplerWrap_Default,
|
||||
|
||||
SamplerWrap_Max = SamplerWrap_Repeat
|
||||
};
|
||||
|
||||
enum StencilOperation
|
||||
{
|
||||
StencilOperation_Decrement,
|
||||
StencilOperation_DecrementNoClamp,
|
||||
StencilOperation_Increment,
|
||||
StencilOperation_IncrementNoClamp,
|
||||
StencilOperation_Invert,
|
||||
StencilOperation_Keep,
|
||||
StencilOperation_Replace,
|
||||
StencilOperation_Zero,
|
||||
|
||||
StencilOperation_Max = StencilOperation_Zero
|
||||
};
|
||||
|
||||
enum TextAlign
|
||||
{
|
||||
TextAlign_Left,
|
||||
|
||||
65
include/Nazara/Utility/MaterialData.hpp
Normal file
65
include/Nazara/Utility/MaterialData.hpp
Normal file
@@ -0,0 +1,65 @@
|
||||
// Copyright (C) 2015 Jérôme Leclercq
|
||||
// This file is part of the "Nazara Engine - Utility module"
|
||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef NAZARA_MATERIALDATA_HPP
|
||||
#define NAZARA_MATERIALDATA_HPP
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
struct MaterialData
|
||||
{
|
||||
static constexpr const char* AlphaTest = "MatAlphaTest";
|
||||
static constexpr const char* AlphaTexturePath = "MatAlphaTexturePath";
|
||||
static constexpr const char* AlphaThreshold = "MatAlphaThreshold";
|
||||
static constexpr const char* AmbientColor = "MatAmbientColor";
|
||||
static constexpr const char* BackFaceStencilCompare = "MatBackFaceStencilCompare";
|
||||
static constexpr const char* BackFaceStencilFail = "MatBackFaceStencilFail";
|
||||
static constexpr const char* BackFaceStencilMask = "MatBackFaceStencilMask";
|
||||
static constexpr const char* BackFaceStencilPass = "MatBackFaceStencilPass";
|
||||
static constexpr const char* BackFaceStencilReference = "MatBackFaceStencilReference";
|
||||
static constexpr const char* BackFaceStencilZFail = "MatBackFaceStencilZFail";
|
||||
static constexpr const char* Blending = "MatBlending";
|
||||
static constexpr const char* CustomDefined = "MatCustomDefined";
|
||||
static constexpr const char* ColorWrite = "MatColorWrite";
|
||||
static constexpr const char* DepthBuffer = "MatDepthBuffer";
|
||||
static constexpr const char* DepthFunc = "MatDepthfunc";
|
||||
static constexpr const char* DepthSorting = "MatDepthSorting";
|
||||
static constexpr const char* DepthWrite = "MatDepthWrite";
|
||||
static constexpr const char* DiffuseAnisotropyLevel = "MatDiffuseAnisotropyLevel";
|
||||
static constexpr const char* DiffuseColor = "MatDiffuseColor";
|
||||
static constexpr const char* DiffuseFilter = "MatDiffuseFilter";
|
||||
static constexpr const char* DiffuseTexturePath = "MatDiffuseTexturePath";
|
||||
static constexpr const char* DiffuseWrap = "MatDiffuseWrap";
|
||||
static constexpr const char* DstBlend = "MatDstBlend";
|
||||
static constexpr const char* EmissiveTexturePath = "MatEmissiveTexturePath";
|
||||
static constexpr const char* FaceCulling = "MatFaceCulling";
|
||||
static constexpr const char* FaceFilling = "MatFaceFilling";
|
||||
static constexpr const char* FilePath = "MatFilePath";
|
||||
static constexpr const char* HeightTexturePath = "MatHeightTexturePath";
|
||||
static constexpr const char* Lighting = "MatLighting";
|
||||
static constexpr const char* LineWidth = "MatLineWidth";
|
||||
static constexpr const char* NormalTexturePath = "MatNormalTexturePath";
|
||||
static constexpr const char* PointSize = "MatPointSize";
|
||||
static constexpr const char* ScissorTest = "MatScissorTest";
|
||||
static constexpr const char* Shininess = "MatShininess";
|
||||
static constexpr const char* SpecularAnisotropyLevel = "MatSpecularAnisotropyLevel";
|
||||
static constexpr const char* SpecularColor = "MatSpecularColor";
|
||||
static constexpr const char* SpecularFilter = "MatSpecularFilter";
|
||||
static constexpr const char* SpecularTexturePath = "MatSpecularTexturePath";
|
||||
static constexpr const char* SpecularWrap = "MatSpecularWrap";
|
||||
static constexpr const char* SrcBlend = "MatSrcBlend";
|
||||
static constexpr const char* StencilCompare = "MatStencilCompare";
|
||||
static constexpr const char* StencilFail = "MatStencilFail";
|
||||
static constexpr const char* StencilMask = "MatStencilMask";
|
||||
static constexpr const char* StencilPass = "MatStencilPass";
|
||||
static constexpr const char* StencilReference = "MatStencilReference";
|
||||
static constexpr const char* StencilTest = "MatStencilTest";
|
||||
static constexpr const char* StencilZFail = "MatStencilZFail";
|
||||
static constexpr const char* Transform = "MatTransform";
|
||||
};
|
||||
}
|
||||
|
||||
#endif // NAZARA_MATERIALDATA_HPP
|
||||
@@ -93,7 +93,8 @@ namespace Nz
|
||||
String GetAnimation() const;
|
||||
AnimationType GetAnimationType() const;
|
||||
unsigned int GetJointCount() const;
|
||||
String GetMaterial(unsigned int index) const;
|
||||
ParameterList& GetMaterialData(unsigned int index);
|
||||
const ParameterList& GetMaterialData(unsigned int index) const;
|
||||
unsigned int GetMaterialCount() const;
|
||||
Skeleton* GetSkeleton();
|
||||
const Skeleton* GetSkeleton() const;
|
||||
@@ -124,8 +125,8 @@ namespace Nz
|
||||
void RemoveSubMesh(unsigned int index);
|
||||
|
||||
void SetAnimation(const String& animationPath);
|
||||
void SetMaterial(unsigned int matIndex, const String& materialPath);
|
||||
void SetMaterialCount(unsigned int matCount);
|
||||
void SetMaterialData(unsigned int matIndex, ParameterList data);
|
||||
|
||||
void Transform(const Matrix4f& matrix);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user