renamed MaterialInstance to MaterialParameters.
This commit is contained in:
parent
0f42ab3987
commit
bc8848afa6
@ -35,7 +35,7 @@ private:
|
|||||||
|
|
||||||
Camera cam;
|
Camera cam;
|
||||||
|
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
RenderableInstance *render_instance =nullptr;
|
RenderableInstance *render_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
GPUBuffer * ubo_color_material =nullptr;
|
GPUBuffer * ubo_color_material =nullptr;
|
||||||
|
@ -37,7 +37,7 @@ private:
|
|||||||
SceneNode render_root;
|
SceneNode render_root;
|
||||||
RenderList render_list;
|
RenderList render_list;
|
||||||
|
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
Pipeline * pipeline_solid =nullptr;
|
Pipeline * pipeline_solid =nullptr;
|
||||||
|
|
||||||
GPUBuffer * ubo_atomsphere =nullptr;
|
GPUBuffer * ubo_atomsphere =nullptr;
|
||||||
|
@ -70,7 +70,7 @@ private:
|
|||||||
struct SubpassParam
|
struct SubpassParam
|
||||||
{
|
{
|
||||||
Material * material;
|
Material * material;
|
||||||
MaterialInstance * material_instance;
|
MaterialParameters * material_instance;
|
||||||
Pipeline * pipeline_fan;
|
Pipeline * pipeline_fan;
|
||||||
Pipeline * pipeline_triangles;
|
Pipeline * pipeline_triangles;
|
||||||
};//
|
};//
|
||||||
|
@ -27,7 +27,7 @@ class TestApp:public VulkanApplicationFramework
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
GPUBuffer * ubo_color =nullptr;
|
GPUBuffer * ubo_color =nullptr;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ class TestApp:public VulkanApplicationFramework
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
Renderable * render_obj =nullptr;
|
Renderable * render_obj =nullptr;
|
||||||
RenderableInstance *render_instance =nullptr;
|
RenderableInstance *render_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
|
@ -26,7 +26,7 @@ private:
|
|||||||
|
|
||||||
Camera cam;
|
Camera cam;
|
||||||
|
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
RenderableInstance *renderable_instance =nullptr;
|
RenderableInstance *renderable_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ private:
|
|||||||
RenderList render_list;
|
RenderList render_list;
|
||||||
|
|
||||||
Material * material =nullptr;
|
Material * material =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
|
|
||||||
Renderable * ro_rectangle =nullptr;
|
Renderable * ro_rectangle =nullptr;
|
||||||
Renderable * ro_circle =nullptr;
|
Renderable * ro_circle =nullptr;
|
||||||
|
@ -27,7 +27,7 @@ private:
|
|||||||
struct MDP
|
struct MDP
|
||||||
{
|
{
|
||||||
Material * material =nullptr;
|
Material * material =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
}m3d,m2d;
|
}m3d,m2d;
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ private:
|
|||||||
|
|
||||||
struct MIR
|
struct MIR
|
||||||
{
|
{
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
RenderableInstance *renderable_instance =nullptr;
|
RenderableInstance *renderable_instance =nullptr;
|
||||||
}mir_nearest,mir_linear,mir_nearest_hq,mir_linear_hq;
|
}mir_nearest,mir_linear,mir_nearest_hq,mir_linear_hq;
|
||||||
|
|
||||||
|
@ -41,10 +41,10 @@ private:
|
|||||||
RenderList render_list;
|
RenderList render_list;
|
||||||
|
|
||||||
Material * material =nullptr;
|
Material * material =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
|
|
||||||
Material * axis_material =nullptr;
|
Material * axis_material =nullptr;
|
||||||
MaterialInstance * axis_mi =nullptr;
|
MaterialParameters * axis_mi =nullptr;
|
||||||
|
|
||||||
PipelineData * pipeline_data =nullptr;
|
PipelineData * pipeline_data =nullptr;
|
||||||
Pipeline * axis_pipeline =nullptr;
|
Pipeline * axis_pipeline =nullptr;
|
||||||
|
@ -15,7 +15,7 @@ class TestApp:public CameraAppFramework
|
|||||||
{
|
{
|
||||||
Camera cam;
|
Camera cam;
|
||||||
|
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ private:
|
|||||||
|
|
||||||
Texture2D * texture =nullptr;
|
Texture2D * texture =nullptr;
|
||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
Renderable * render_obj =nullptr;
|
Renderable * render_obj =nullptr;
|
||||||
RenderableInstance *render_instance =nullptr;
|
RenderableInstance *render_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
|
@ -33,7 +33,7 @@ private:
|
|||||||
|
|
||||||
Camera cam;
|
Camera cam;
|
||||||
|
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
RenderableInstance *render_instance =nullptr;
|
RenderableInstance *render_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ private:
|
|||||||
|
|
||||||
Camera cam;
|
Camera cam;
|
||||||
|
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
RenderableInstance *renderable_instance =nullptr;
|
RenderableInstance *renderable_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ private:
|
|||||||
|
|
||||||
Texture2D * texture =nullptr;
|
Texture2D * texture =nullptr;
|
||||||
Sampler * sampler =nullptr;
|
Sampler * sampler =nullptr;
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
RenderableInstance *renderable_instance =nullptr;
|
RenderableInstance *renderable_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
Pipeline * pipeline =nullptr;
|
Pipeline * pipeline =nullptr;
|
||||||
|
@ -36,7 +36,7 @@ private:
|
|||||||
SceneNode render_root;
|
SceneNode render_root;
|
||||||
RenderList render_list;
|
RenderList render_list;
|
||||||
|
|
||||||
MaterialInstance * material_instance =nullptr;
|
MaterialParameters * material_instance =nullptr;
|
||||||
RenderableInstance *render_instance =nullptr;
|
RenderableInstance *render_instance =nullptr;
|
||||||
GPUBuffer * ubo_camera_info =nullptr;
|
GPUBuffer * ubo_camera_info =nullptr;
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ namespace hgl
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
Pipeline * last_pipeline;
|
Pipeline * last_pipeline;
|
||||||
MaterialInstance * last_mi;
|
MaterialParameters * last_mi;
|
||||||
uint32_t last_vbo;
|
uint32_t last_vbo;
|
||||||
|
|
||||||
void Render(RenderableInstance *);
|
void Render(RenderableInstance *);
|
||||||
|
@ -20,7 +20,7 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
using PipelineSets =Sets<Pipeline *>;
|
using PipelineSets =Sets<Pipeline *>;
|
||||||
using MaterialSets =Sets<Material *>;
|
using MaterialSets =Sets<Material *>;
|
||||||
using MatInstSets =Sets<MaterialInstance *>;
|
using MatInstSets =Sets<MaterialParameters *>;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ class ShaderResource;
|
|||||||
class ShaderModule;
|
class ShaderModule;
|
||||||
class VertexShaderModule;
|
class VertexShaderModule;
|
||||||
class Material;
|
class Material;
|
||||||
class MaterialInstance;
|
class MaterialParameters;
|
||||||
class PipelineLayout;
|
class PipelineLayout;
|
||||||
struct PipelineData;
|
struct PipelineData;
|
||||||
enum class InlinePipeline;
|
enum class InlinePipeline;
|
||||||
|
@ -75,7 +75,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
MaterialInstance * CreateInstance ();
|
MaterialParameters * CreateInstance ();
|
||||||
};//class Material
|
};//class Material
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_VULKAN_MATERIAL_INCLUDE
|
#endif//HGL_GRAPH_VULKAN_MATERIAL_INCLUDE
|
||||||
|
@ -1,35 +1,48 @@
|
|||||||
#ifndef HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
|
#ifndef HGL_GRAPH_VULKAN_MATERIAL_PARAMETERS_INCLUDE
|
||||||
#define HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
|
#define HGL_GRAPH_VULKAN_MATERIAL_PARAMETERS_INCLUDE
|
||||||
|
|
||||||
#include<hgl/graph/VK.h>
|
#include<hgl/graph/VK.h>
|
||||||
#include<hgl/type/String.h>
|
#include<hgl/type/String.h>
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
class MaterialInstance
|
class MaterialParameters
|
||||||
{
|
{
|
||||||
Material *material;
|
Material *material;
|
||||||
|
|
||||||
|
DescriptorSetsType ds_type;
|
||||||
|
|
||||||
DescriptorSets *descriptor_sets;
|
DescriptorSets *descriptor_sets;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
friend class Material;
|
friend class Material;
|
||||||
|
|
||||||
MaterialInstance(Material *,DescriptorSets *);
|
MaterialParameters(Material *,const DescriptorSetsType &type,DescriptorSets *);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Material * GetMaterial (){return material;}
|
Material * GetMaterial (){return material;}
|
||||||
|
const DescriptorSetsType GetType (){return ds_type;}
|
||||||
DescriptorSets * GetDescriptorSets(){return descriptor_sets;}
|
DescriptorSets * GetDescriptorSets(){return descriptor_sets;}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
~MaterialInstance();
|
#define MP_TYPE_IS(name) const bool is##name()const{return ds_type==DescriptorSetsType::name;}
|
||||||
|
MP_TYPE_IS(Material)
|
||||||
|
MP_TYPE_IS(Texture)
|
||||||
|
MP_TYPE_IS(Values)
|
||||||
|
MP_TYPE_IS(Renderable)
|
||||||
|
MP_TYPE_IS(Global)
|
||||||
|
#undef MP_TYPE_IS
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual ~MaterialParameters();
|
||||||
|
|
||||||
bool BindUBO(const AnsiString &name,GPUBuffer *ubo,bool dynamic=false);
|
bool BindUBO(const AnsiString &name,GPUBuffer *ubo,bool dynamic=false);
|
||||||
bool BindSSBO(const AnsiString &name,GPUBuffer *ubo,bool dynamic=false);
|
bool BindSSBO(const AnsiString &name,GPUBuffer *ubo,bool dynamic=false);
|
||||||
bool BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler);
|
bool BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler);
|
||||||
|
|
||||||
void Update();
|
void Update();
|
||||||
};//class MaterialInstance
|
};//class MaterialParameters
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
|
#endif//HGL_GRAPH_VULKAN_MATERIAL_PARAMETERS_INCLUDE
|
@ -37,7 +37,7 @@ class RenderResource
|
|||||||
Map<OSString,Texture *> texture_by_name;
|
Map<OSString,Texture *> texture_by_name;
|
||||||
|
|
||||||
IDResManage<MaterialID, Material> rm_material; ///<材质合集
|
IDResManage<MaterialID, Material> rm_material; ///<材质合集
|
||||||
IDResManage<MaterialInstanceID, MaterialInstance> rm_material_instance; ///<材质实例合集
|
IDResManage<MaterialInstanceID, MaterialParameters> rm_material_instance; ///<材质实例合集
|
||||||
IDResManage<DescriptorSetsID, DescriptorSets> rm_desc_sets; ///<描述符合集
|
IDResManage<DescriptorSetsID, DescriptorSets> rm_desc_sets; ///<描述符合集
|
||||||
IDResManage<RenderableID, Renderable> rm_renderables; ///<可渲染对象合集
|
IDResManage<RenderableID, Renderable> rm_renderables; ///<可渲染对象合集
|
||||||
IDResManage<BufferID, GPUBuffer> rm_buffers; ///<顶点缓冲区合集
|
IDResManage<BufferID, GPUBuffer> rm_buffers; ///<顶点缓冲区合集
|
||||||
@ -53,7 +53,7 @@ public:
|
|||||||
public: //Add
|
public: //Add
|
||||||
|
|
||||||
MaterialID Add(Material * mtl ){return rm_material.Add(mtl);}
|
MaterialID Add(Material * mtl ){return rm_material.Add(mtl);}
|
||||||
MaterialInstanceID Add(MaterialInstance * mi ){return rm_material_instance.Add(mi);}
|
MaterialInstanceID Add(MaterialParameters * mi ){return rm_material_instance.Add(mi);}
|
||||||
DescriptorSetsID Add(DescriptorSets * ds ){return rm_desc_sets.Add(ds);}
|
DescriptorSetsID Add(DescriptorSets * ds ){return rm_desc_sets.Add(ds);}
|
||||||
RenderableID Add(Renderable * r ){return rm_renderables.Add(r);}
|
RenderableID Add(Renderable * r ){return rm_renderables.Add(r);}
|
||||||
BufferID Add(GPUBuffer * buf ){return rm_buffers.Add(buf);}
|
BufferID Add(GPUBuffer * buf ){return rm_buffers.Add(buf);}
|
||||||
@ -93,13 +93,13 @@ public: //Material
|
|||||||
Material * CreateMaterial(const UTF8String &mtl_name,const OSString &vertex_shader_filename,const OSString &geometry_shader_filename,const OSString &fragment_shader_filename);
|
Material * CreateMaterial(const UTF8String &mtl_name,const OSString &vertex_shader_filename,const OSString &geometry_shader_filename,const OSString &fragment_shader_filename);
|
||||||
|
|
||||||
Material * CreateMaterial(const OSString &);
|
Material * CreateMaterial(const OSString &);
|
||||||
MaterialInstance * CreateMaterialInstance(Material *);
|
MaterialParameters * CreateMaterialInstance(Material *);
|
||||||
MaterialInstance * CreateMaterialInstance(const OSString &);
|
MaterialParameters * CreateMaterialInstance(const OSString &);
|
||||||
|
|
||||||
Renderable * CreateRenderable(const uint32_t vertex_count=0);
|
Renderable * CreateRenderable(const uint32_t vertex_count=0);
|
||||||
TextRenderable * CreateTextRenderable(Material *);
|
TextRenderable * CreateTextRenderable(Material *);
|
||||||
|
|
||||||
RenderableInstance *CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p);
|
RenderableInstance *CreateRenderableInstance(Renderable *r,MaterialParameters *mi,Pipeline *p);
|
||||||
|
|
||||||
Sampler * CreateSampler(VkSamplerCreateInfo *sci=nullptr);
|
Sampler * CreateSampler(VkSamplerCreateInfo *sci=nullptr);
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ public: //texture
|
|||||||
public: //Get
|
public: //Get
|
||||||
|
|
||||||
Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);}
|
Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);}
|
||||||
MaterialInstance * GetMaterialInstance (const MaterialInstanceID &id){return rm_material_instance.Get(id);}
|
MaterialParameters * GetMaterialInstance (const MaterialInstanceID &id){return rm_material_instance.Get(id);}
|
||||||
DescriptorSets * GetDescSets (const DescriptorSetsID &id){return rm_desc_sets.Get(id);}
|
DescriptorSets * GetDescSets (const DescriptorSetsID &id){return rm_desc_sets.Get(id);}
|
||||||
Renderable * GetRenderable (const RenderableID &id){return rm_renderables.Get(id);}
|
Renderable * GetRenderable (const RenderableID &id){return rm_renderables.Get(id);}
|
||||||
GPUBuffer * GetBuffer (const BufferID &id){return rm_buffers.Get(id);}
|
GPUBuffer * GetBuffer (const BufferID &id){return rm_buffers.Get(id);}
|
||||||
|
@ -13,7 +13,7 @@ VK_NAMESPACE_BEGIN
|
|||||||
class RenderableInstance ///可渲染对象实例
|
class RenderableInstance ///可渲染对象实例
|
||||||
{
|
{
|
||||||
Pipeline * pipeline;
|
Pipeline * pipeline;
|
||||||
MaterialInstance * mat_inst;
|
MaterialParameters * mat_inst;
|
||||||
Renderable * render_obj;
|
Renderable * render_obj;
|
||||||
|
|
||||||
DescriptorSets * descriptor_sets; ///<渲染实例专用描述符合集,一般用于存LocalToWorld等等
|
DescriptorSets * descriptor_sets; ///<渲染实例专用描述符合集,一般用于存LocalToWorld等等
|
||||||
@ -26,16 +26,16 @@ class RenderableInstance
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
friend RenderableInstance *CreateRenderableInstance(Renderable *,MaterialInstance *,Pipeline *);
|
friend RenderableInstance *CreateRenderableInstance(Renderable *,MaterialParameters *,Pipeline *);
|
||||||
|
|
||||||
RenderableInstance(Renderable *,MaterialInstance *,Pipeline *,const uint32_t,VkBuffer *,VkDeviceSize *);
|
RenderableInstance(Renderable *,MaterialParameters *,Pipeline *,const uint32_t,VkBuffer *,VkDeviceSize *);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
virtual ~RenderableInstance();
|
virtual ~RenderableInstance();
|
||||||
|
|
||||||
Pipeline * GetPipeline (){return pipeline;}
|
Pipeline * GetPipeline (){return pipeline;}
|
||||||
MaterialInstance * GetMaterialInstance (){return mat_inst;}
|
MaterialParameters * GetMaterialInstance (){return mat_inst;}
|
||||||
Renderable * GetRenderable (){return render_obj;}
|
Renderable * GetRenderable (){return render_obj;}
|
||||||
const AABB & GetBoundingBox ()const{return render_obj->GetBoundingBox();}
|
const AABB & GetBoundingBox ()const{return render_obj->GetBoundingBox();}
|
||||||
|
|
||||||
@ -95,6 +95,6 @@ public:
|
|||||||
CompOperator(const RenderableInstance *,Comp)
|
CompOperator(const RenderableInstance *,Comp)
|
||||||
};//class RenderableInstance
|
};//class RenderableInstance
|
||||||
|
|
||||||
RenderableInstance *CreateRenderableInstance(Renderable *,MaterialInstance *,Pipeline *);
|
RenderableInstance *CreateRenderableInstance(Renderable *,MaterialParameters *,Pipeline *);
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
#endif//HGL_GRAPH_RENDERABLE_INSTANCE_INCLUDE
|
||||||
|
@ -56,10 +56,10 @@ enum class DescriptorSetsType
|
|||||||
//设计使其对应shader中的sets
|
//设计使其对应shader中的sets
|
||||||
|
|
||||||
Material=0, ///<材质中永远不变的参数
|
Material=0, ///<材质中永远不变的参数
|
||||||
MaterialTexture, ///<材质中的纹理参数
|
Texture, ///<材质中的纹理参数
|
||||||
MaterialValues, ///<材质中的变量参数
|
Values, ///<材质中的变量参数
|
||||||
RenderableInstance, ///<渲染实例参数
|
Renderable, ///<渲染实例参数(如Local2World matrix)
|
||||||
Global, ///<全局参数
|
Global, ///<全局参数(如太阳光等)
|
||||||
};//
|
};//
|
||||||
|
|
||||||
#ifndef VK_DESCRIPTOR_TYPE_BEGIN_RANGE
|
#ifndef VK_DESCRIPTOR_TYPE_BEGIN_RANGE
|
||||||
|
@ -44,7 +44,7 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
MaterialInstance *mi=ri->GetMaterialInstance();
|
MaterialParameters *mi=ri->GetMaterialInstance();
|
||||||
|
|
||||||
if(mi!=last_mi)
|
if(mi!=last_mi)
|
||||||
{
|
{
|
||||||
|
@ -18,8 +18,8 @@ int Comparator<RenderNodePointer>::compare(const RenderNodePointer &obj_one,cons
|
|||||||
int off;
|
int off;
|
||||||
|
|
||||||
//比较材质
|
//比较材质
|
||||||
hgl::graph::MaterialInstance *mi1=obj_one->ri->GetMaterialInstance();
|
hgl::graph::MaterialParameters *mi1=obj_one->ri->GetMaterialInstance();
|
||||||
hgl::graph::MaterialInstance *mi2=obj_two->ri->GetMaterialInstance();
|
hgl::graph::MaterialParameters *mi2=obj_two->ri->GetMaterialInstance();
|
||||||
|
|
||||||
off=mi1->GetMaterial()-mi2->GetMaterial();
|
off=mi1->GetMaterial()-mi2->GetMaterial();
|
||||||
|
|
||||||
|
@ -4,18 +4,18 @@
|
|||||||
#include<hgl/graph/VKDescriptorSets.h>
|
#include<hgl/graph/VKDescriptorSets.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
MaterialInstance::MaterialInstance(Material *m,DescriptorSets *ds)
|
MaterialParameters::MaterialParameters(Material *m,DescriptorSets *ds)
|
||||||
{
|
{
|
||||||
material=m;
|
material=m;
|
||||||
descriptor_sets=ds;
|
descriptor_sets=ds;
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance::~MaterialInstance()
|
MaterialParameters::~MaterialParameters()
|
||||||
{
|
{
|
||||||
delete descriptor_sets;
|
delete descriptor_sets;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MaterialInstance::BindUBO(const AnsiString &name,GPUBuffer *ubo,bool dynamic)
|
bool MaterialParameters::BindUBO(const AnsiString &name,GPUBuffer *ubo,bool dynamic)
|
||||||
{
|
{
|
||||||
if(name.IsEmpty()||!ubo)
|
if(name.IsEmpty()||!ubo)
|
||||||
return(false);
|
return(false);
|
||||||
@ -31,7 +31,7 @@ bool MaterialInstance::BindUBO(const AnsiString &name,GPUBuffer *ubo,bool dynami
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MaterialInstance::BindSSBO(const AnsiString &name,GPUBuffer *ssbo,bool dynamic)
|
bool MaterialParameters::BindSSBO(const AnsiString &name,GPUBuffer *ssbo,bool dynamic)
|
||||||
{
|
{
|
||||||
if(name.IsEmpty()||!ssbo)
|
if(name.IsEmpty()||!ssbo)
|
||||||
return(false);
|
return(false);
|
||||||
@ -47,7 +47,7 @@ bool MaterialInstance::BindSSBO(const AnsiString &name,GPUBuffer *ssbo,bool dyna
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MaterialInstance::BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler)
|
bool MaterialParameters::BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler)
|
||||||
{
|
{
|
||||||
if(name.IsEmpty()||!tex||!sampler)
|
if(name.IsEmpty()||!tex||!sampler)
|
||||||
return(false);
|
return(false);
|
||||||
@ -63,17 +63,17 @@ bool MaterialInstance::BindSampler(const AnsiString &name,Texture *tex,Sampler *
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaterialInstance::Update()
|
void MaterialParameters::Update()
|
||||||
{
|
{
|
||||||
descriptor_sets->Update();
|
descriptor_sets->Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance *Material::CreateInstance()
|
MaterialParameters *Material::CreateInstance()
|
||||||
{
|
{
|
||||||
DescriptorSets *ds=CreateMIDescriptorSets();
|
DescriptorSets *ds=CreateMIDescriptorSets();
|
||||||
|
|
||||||
if(!ds)return(nullptr);
|
if(!ds)return(nullptr);
|
||||||
|
|
||||||
return(new MaterialInstance(this,ds));
|
return(new MaterialParameters(this,ds));
|
||||||
}
|
}
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
@ -50,11 +50,11 @@ IndexBuffer *RenderResource::CreateIBO(IndexType index_type,uint32_t count,const
|
|||||||
return(buf);
|
return(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl)
|
MaterialParameters *RenderResource::CreateMaterialInstance(Material *mtl)
|
||||||
{
|
{
|
||||||
if(!mtl)return(nullptr);
|
if(!mtl)return(nullptr);
|
||||||
|
|
||||||
MaterialInstance *mi=mtl->CreateInstance();
|
MaterialParameters *mi=mtl->CreateInstance();
|
||||||
|
|
||||||
if(mi)
|
if(mi)
|
||||||
Add(mi);
|
Add(mi);
|
||||||
@ -62,7 +62,7 @@ MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl)
|
|||||||
return mi;
|
return mi;
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_filename)
|
MaterialParameters *RenderResource::CreateMaterialInstance(const OSString &mtl_filename)
|
||||||
{
|
{
|
||||||
Material *mtl=this->CreateMaterial(mtl_filename);
|
Material *mtl=this->CreateMaterial(mtl_filename);
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ TextRenderable *RenderResource::CreateTextRenderable(Material *mtl)
|
|||||||
return tr;
|
return tr;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderableInstance *RenderResource::CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p)
|
RenderableInstance *RenderResource::CreateRenderableInstance(Renderable *r,MaterialParameters *mi,Pipeline *p)
|
||||||
{
|
{
|
||||||
if(!p||!mi||!r)
|
if(!p||!mi||!r)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -21,7 +21,7 @@ Pipeline *RenderTarget::CreatePipeline(Material *mtl,const InlinePipeline &ip,co
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
Pipeline *RenderTarget::CreatePipeline(MaterialInstance *mi,const InlinePipeline &ip,const Prim &prim,const bool prim_restart)
|
Pipeline *RenderTarget::CreatePipeline(MaterialParameters *mi,const InlinePipeline &ip,const Prim &prim,const bool prim_restart)
|
||||||
{
|
{
|
||||||
if(!mi)return(nullptr);
|
if(!mi)return(nullptr);
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ Pipeline *RenderTarget::CreatePipeline(Material *mtl,PipelineData *pd,const Prim
|
|||||||
return(p);
|
return(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
Pipeline *RenderTarget::CreatePipeline(MaterialInstance *mi,PipelineData *pd,const Prim &prim,const bool prim_restart)
|
Pipeline *RenderTarget::CreatePipeline(MaterialParameters *mi,PipelineData *pd,const Prim &prim,const bool prim_restart)
|
||||||
{
|
{
|
||||||
return CreatePipeline(mi->GetMaterial(),pd,prim,prim_restart);
|
return CreatePipeline(mi->GetMaterial(),pd,prim,prim_restart);
|
||||||
}
|
}
|
||||||
@ -54,7 +54,7 @@ Pipeline *RenderTarget::CreatePipeline(Material *mtl,const OSString &pipeline_fi
|
|||||||
return CreatePipeline(mtl,pd,prim,prim_restart);
|
return CreatePipeline(mtl,pd,prim,prim_restart);
|
||||||
}
|
}
|
||||||
|
|
||||||
Pipeline *RenderTarget::CreatePipeline(MaterialInstance *mi,const OSString &filename,const Prim &prim,const bool prim_restart)
|
Pipeline *RenderTarget::CreatePipeline(MaterialParameters *mi,const OSString &filename,const Prim &prim,const bool prim_restart)
|
||||||
{
|
{
|
||||||
return CreatePipeline(mi->GetMaterial(),filename,prim,prim_restart);
|
return CreatePipeline(mi->GetMaterial(),filename,prim,prim_restart);
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ VK_NAMESPACE_BEGIN
|
|||||||
|
|
||||||
using namespace util;
|
using namespace util;
|
||||||
|
|
||||||
RenderableInstance::RenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p,const uint32_t count,VkBuffer *bl,VkDeviceSize *bs)
|
RenderableInstance::RenderableInstance(Renderable *r,MaterialParameters *mi,Pipeline *p,const uint32_t count,VkBuffer *bl,VkDeviceSize *bs)
|
||||||
{
|
{
|
||||||
render_obj=r;
|
render_obj=r;
|
||||||
mat_inst=mi;
|
mat_inst=mi;
|
||||||
@ -35,7 +35,7 @@ RenderableInstance::~RenderableInstance()
|
|||||||
delete[] buffer_size;
|
delete[] buffer_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderableInstance *CreateRenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p)
|
RenderableInstance *CreateRenderableInstance(Renderable *r,MaterialParameters *mi,Pipeline *p)
|
||||||
{
|
{
|
||||||
if(!r||!mi||!p)return(nullptr);
|
if(!r||!mi||!p)return(nullptr);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user