2020-01-09 18:22:18 +08:00
|
|
|
|
#ifndef HGL_GRAPH_MATERIAL_DATA_SOURCE_INCLUDE
|
|
|
|
|
#define HGL_GRAPH_MATERIAL_DATA_SOURCE_INCLUDE
|
|
|
|
|
|
|
|
|
|
#include<hgl/graph/material/Material.h>
|
|
|
|
|
#include<hgl/type/BaseString.h>
|
|
|
|
|
|
2020-01-14 18:09:40 +08:00
|
|
|
|
MATERIAL_NAMESPACE_BEGIN
|
2020-01-09 18:22:18 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 数据源
|
|
|
|
|
*/
|
|
|
|
|
class DataSource
|
|
|
|
|
{
|
|
|
|
|
DataFormat format;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2020-01-09 22:01:27 +08:00
|
|
|
|
const ComponentDataType GetDataType()const{return GetFormatBaseType(format);} ///<获取数据基本类型
|
|
|
|
|
const uint GetChannels()const{return GetFormatChannels(format);} ///<获取数据通道数量
|
2020-01-09 18:22:18 +08:00
|
|
|
|
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
2020-01-09 18:22:18 +08:00
|
|
|
|
|
2020-01-09 22:01:27 +08:00
|
|
|
|
DataSource() {format=DataFormat::NONE;}
|
|
|
|
|
DataSource(const DataFormat &df){format=df;}
|
2020-01-09 18:22:18 +08:00
|
|
|
|
virtual ~DataSource()=default;
|
2020-01-10 18:04:52 +08:00
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
virtual bool GenDefine(UTF8String &){return false;} ///<产生define代码
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSource
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 固定值数据源
|
|
|
|
|
*/
|
|
|
|
|
class DataSourceConst:public DataSource
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSource::DataSource;
|
2020-01-10 18:04:52 +08:00
|
|
|
|
|
|
|
|
|
virtual bool GenDefine(UTF8String &)=0; ///<产生define代码
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSourceConst:public DataSource
|
|
|
|
|
|
|
|
|
|
/**
|
2020-01-09 22:01:27 +08:00
|
|
|
|
* Uniform 数据源
|
2020-01-09 18:22:18 +08:00
|
|
|
|
*/
|
|
|
|
|
class DataSourceUniform:public DataSource
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSource::DataSource;
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSourceUniform:public DataSource
|
|
|
|
|
|
2020-01-09 22:01:27 +08:00
|
|
|
|
/**
|
|
|
|
|
* 函数数据源
|
|
|
|
|
*/
|
2020-01-14 18:09:40 +08:00
|
|
|
|
class DataSourceFunction:public DataSource
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSource::DataSource;
|
|
|
|
|
};//class DataSourceFunction:public DataSource
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 顶点数据源
|
|
|
|
|
*/
|
|
|
|
|
class DataSourceVertex:public DataSource
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSource::DataSource;
|
2020-01-14 18:09:40 +08:00
|
|
|
|
};//class DataSourceVertex:public DataSource
|
2020-01-09 22:01:27 +08:00
|
|
|
|
|
2020-01-09 18:22:18 +08:00
|
|
|
|
/**
|
|
|
|
|
* 纹理数据源
|
|
|
|
|
*/
|
|
|
|
|
class DataSourceTexture:public DataSource
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSource::DataSource;
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSourceTexture:public DataSource
|
|
|
|
|
|
|
|
|
|
class DataSourceTexture1D:public DataSourceTexture
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSourceTexture::DataSourceTexture;
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSourceTexture1D:public DataSourceTexture
|
|
|
|
|
|
2020-01-09 22:01:27 +08:00
|
|
|
|
class DataSourceTexture1DArrays:public DataSourceTexture
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSourceTexture::DataSourceTexture;
|
|
|
|
|
};//class DataSourceTexture1DArrays:public DataSourceTexture
|
|
|
|
|
|
2020-01-09 18:22:18 +08:00
|
|
|
|
class DataSourceTexture2D:public DataSourceTexture
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSourceTexture::DataSourceTexture;
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSourceTexture2D:public DataSourceTexture
|
|
|
|
|
|
|
|
|
|
class DataSourceTexture2DArrays:public DataSourceTexture
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSourceTexture::DataSourceTexture;
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSourceTexture2DArrays:public DataSourceTexture
|
|
|
|
|
|
|
|
|
|
class DataSourceTextureCubemap:public DataSourceTexture
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSourceTexture::DataSourceTexture;
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSourceTextureCubemap:public DataSourceTexture
|
|
|
|
|
|
|
|
|
|
class DataSourceTextureCubemapArrays:public DataSourceTexture
|
|
|
|
|
{
|
2020-01-09 22:01:27 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
using DataSourceTexture::DataSourceTexture;
|
2020-01-09 18:22:18 +08:00
|
|
|
|
};//class DataSourceTextureCubemapArrays:public DataSourceTexture
|
2020-01-14 18:09:40 +08:00
|
|
|
|
MATERIAL_NAMESPACE_END
|
2020-01-09 18:22:18 +08:00
|
|
|
|
#endif//HGL_GRAPH_MATERIAL_DATA_SOURCE_INCLUDE
|