added comments at VKDeviceMaterial.cpp

This commit is contained in:
hyzboy 2023-05-10 02:32:03 +08:00
parent 7c3d9ecf91
commit 004504e027
No known key found for this signature in database
GPG Key ID: 067EE4525D4FB6D3
4 changed files with 19 additions and 9 deletions

View File

@ -71,19 +71,25 @@ public:
public: public:
const uint32_t GetMICount ()const{return mi_count;} const uint32_t GetMICount ()const{return mi_count;}
const uint32_t GetMISize ()const{return mi_size;} const uint32_t GetMISize ()const{return data->mi_size;}
const void * GetMIData ()const{return data->mi_data;} const void * GetMIData ()const{return data->mi_data;}
template<typename T> template<typename T>
T * GetMIData (const uint32_t index)const{return data->mi_data?(T *)(data->mi_data+index*mi_size):nullptr;} T * GetMIData (const uint32_t index)const
{
if(!data->mi_data)return(nullptr);
if(index>=mi_count)return(nullptr);
return data->mi_data+index*mi_size;
}
template<typename T> template<typename T>
bool WriteMIData (const uint32_t index,const T *data) bool WriteMIData (const uint32_t index,const T *write_data)
{ {
if(!data->mi_data)return(false); if(!data->mi_data)return(false);
if(index>=mi_count)return(false); if(index>=mi_count)return(false);
memcpy(mi_data+index*mi_size,data,mi_size); memcpy(data->mi_data+index*mi_size,write_data,data->mi_size);
return(true); return(true);
} }

View File

@ -62,7 +62,7 @@ namespace
// FEATURE_COPY(imageCubeArray); // FEATURE_COPY(imageCubeArray);
// FEATURE_COPY(fullDrawIndexUint32); // FEATURE_COPY(fullDrawIndexUint32);
// FEATURE_COPY(wideLines) FEATURE_COPY(wideLines)
// FEATURE_COPY(largePoints) // FEATURE_COPY(largePoints)
#undef FEATURE_COPY #undef FEATURE_COPY

View File

@ -1,4 +1,4 @@
#include<hgl/graph/VKDevice.h> #include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKMaterial.h> #include<hgl/graph/VKMaterial.h>
#include<hgl/graph/VKMaterialDescriptorManager.h> #include<hgl/graph/VKMaterialDescriptorManager.h>
#include<hgl/graph/VKMaterialParameters.h> #include<hgl/graph/VKMaterialParameters.h>
@ -119,15 +119,20 @@ Material *GPUDevice::CreateMaterial(const UTF8String &mtl_name,ShaderModuleMap *
const VkDeviceSize ubo_range=this->GetUBORange(); const VkDeviceSize ubo_range=this->GetUBORange();
//手机一般ubo_range为16k,PC独显一般为64k
//intel 核显随显存基本无限制
//我们使用uint8类型在vertex input中保存MaterialInstance ID表示范围0-255。
//所以MaterialInstance结构容量在手机上尽量不要超过64字节在PC上不要超过256字节当然intel核显无所谓
if(desc_manager->hasSet(DescriptorSetType::PerMaterial)) if(desc_manager->hasSet(DescriptorSetType::PerMaterial))
{ {
data->mi_data=new uint8[ubo_range];
data->mi_size data->mi_size
data->mi_data=new uint8[data->mi_size*256];
} }
else else
{ {
data->mi_data=nullptr;
data->mi_size=0; data->mi_size=0;
data->mi_data=nullptr;
} }
return(new Material(data)); return(new Material(data));

View File

@ -18,7 +18,6 @@ MaterialData::~MaterialData()
Material::Material(MaterialData *md):data(md) Material::Material(MaterialData *md):data(md)
{ {
mi_size=0;
mi_count=0; mi_count=0;
} }