added comments at VKDeviceMaterial.cpp
This commit is contained in:
parent
7c3d9ecf91
commit
004504e027
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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));
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user