Graphics: Add support for depth-sorted sprites
This commit is contained in:
@@ -153,7 +153,7 @@ namespace Nz
|
||||
|
||||
using MeshPipelineBatches = std::map<const MaterialPipeline*, BatchedMaterialEntry, MaterialPipelineComparator>;
|
||||
|
||||
struct TransparentModelData
|
||||
struct UnbatchedModelData
|
||||
{
|
||||
Matrix4f transformMatrix;
|
||||
MeshData meshData;
|
||||
@@ -161,16 +161,23 @@ namespace Nz
|
||||
const Material* material;
|
||||
};
|
||||
|
||||
using TransparentModelContainer = std::vector<std::size_t>;
|
||||
struct UnbatchedSpriteData
|
||||
{
|
||||
std::size_t spriteCount;
|
||||
const Material* material;
|
||||
const Texture* overlay;
|
||||
const VertexStruct_XYZ_Color_UV* vertices;
|
||||
};
|
||||
|
||||
struct Layer
|
||||
{
|
||||
BillboardPipelineBatches billboards;
|
||||
SpritePipelineBatches opaqueSprites;
|
||||
SpritePipelineBatches depthSortedSprites;
|
||||
MeshPipelineBatches opaqueModels;
|
||||
TransparentModelContainer depthSortedMeshes;
|
||||
std::vector<TransparentModelData> depthSortedMeshData;
|
||||
std::vector<std::size_t> depthSortedMeshes;
|
||||
std::vector<std::size_t> depthSortedSprites;
|
||||
std::vector<UnbatchedModelData> depthSortedMeshData;
|
||||
std::vector<UnbatchedSpriteData> depthSortedSpriteData;
|
||||
std::vector<const Drawable*> otherDrawables;
|
||||
unsigned int clearCount = 0;
|
||||
};
|
||||
|
||||
@@ -43,6 +43,7 @@ namespace Nz
|
||||
void DrawBasicSprites(const SceneData& sceneData, ForwardRenderQueue::Layer& layer) const;
|
||||
void DrawBillboards(const SceneData& sceneData, ForwardRenderQueue::Layer& layer) const;
|
||||
void DrawOpaqueModels(const SceneData& sceneData, ForwardRenderQueue::Layer& layer) const;
|
||||
void DrawOrderedSprites(const SceneData& sceneData, ForwardRenderQueue::Layer& layer) const;
|
||||
void DrawTransparentModels(const SceneData& sceneData, ForwardRenderQueue::Layer& layer) const;
|
||||
const ShaderUniforms* GetShaderUniforms(const Shader* shader) const;
|
||||
void OnShaderInvalidated(const Shader* shader) const;
|
||||
|
||||
Reference in New Issue
Block a user