ULRE/inc/hgl/graph/InlineGeometry.h

236 lines
6.5 KiB
C
Raw Normal View History

2019-05-24 19:28:27 +08:00
#ifndef HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
#define HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
#include<hgl/graph/VK.h>
2019-05-24 19:28:27 +08:00
#include<hgl/math/Vector.h>
#include<hgl/type/RectScope.h>
#include<hgl/type/Color4f.h>
2019-05-24 19:28:27 +08:00
namespace hgl
{
namespace graph
{
/**
* (/)
2019-05-24 19:28:27 +08:00
*/
struct RectangleCreateInfo
{
RectScope2f scope;
2019-05-27 22:48:01 +08:00
};//struct RectangleCreateInfo
2019-05-24 19:28:27 +08:00
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableRectangle(RenderResource *db,Material *mtl,const RectangleCreateInfo *rci);
2019-05-24 19:28:27 +08:00
/**
*
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableGBufferComposition(RenderResource *db,Material *mtl);
2019-05-24 19:28:27 +08:00
/**
* (/线)
2019-05-24 19:28:27 +08:00
*/
struct RoundRectangleCreateInfo:public RectangleCreateInfo
{
2019-05-27 22:48:01 +08:00
float radius; ///<圆角半径
uint32_t round_per; ///<圆角精度
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
2019-05-24 19:28:27 +08:00
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableRoundRectangle(RenderResource *db,Material *mtl,const RoundRectangleCreateInfo *rci);
2019-05-24 19:28:27 +08:00
/**
*
*/
2019-05-27 22:48:01 +08:00
struct CircleCreateInfo
{
Vector2f center; ///<圆心坐标
Vector2f radius; ///<半径
2020-10-19 22:24:00 +08:00
uint field_count=8; ///<分段次数
bool has_color =false;
Vector4f center_color; ///<圆心颜色
Vector4f border_color; ///<边缘颜色
2019-05-27 22:48:01 +08:00
};//struct CircleCreateInfo
/**
* 2D圆形(/线)
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableCircle(RenderResource *db,Material *mtl,const CircleCreateInfo *cci);
2019-05-27 22:48:01 +08:00
/**
*
*/
struct PlaneGridCreateInfo
{
Vector3f coord[4];
vec2<uint> step;
vec2<uint> side_step; //到边界的步数
Color4f color; //一般线条颜色
Color4f side_color; //边界线条颜色
2019-05-27 22:48:01 +08:00
};//struct PlaneGridCreateInfo
/**
* (线)
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderablePlaneGrid(RenderResource *db,Material *mtl,const PlaneGridCreateInfo *pgci);
2019-05-27 22:48:01 +08:00
struct PlaneCreateInfo
{
Vector2f tile;
public:
PlaneCreateInfo()
{
tile.Set(1,1);
}
2019-05-27 22:48:01 +08:00
};//struct PlaneCreateInfo
/**
* ()
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderablePlane(RenderResource *db,Material *mtl,const PlaneCreateInfo *pci);
2019-05-27 22:48:01 +08:00
struct CubeCreateInfo
{
Vector3f center;
Vector3f size;
2019-05-27 22:48:01 +08:00
Vector2f tile;
bool has_color;
Vector4f color;
public:
void Set(const AABB &box)
{
center=box.CenterPoint().xyz();
size=box.Size().xyz();
}
CubeCreateInfo()
{
center.Set(0,0,0);
2019-07-06 16:46:19 +08:00
size.Set(1,1,1);
tile.Set(1,1);
has_color=false;
}
CubeCreateInfo(const AABB &box)
{
Set(box);
tile.Set(1,1);
has_color=false;
}
2019-05-27 22:48:01 +08:00
};//struct CubeCreateInfo
/**
* ()
2019-05-27 22:48:01 +08:00
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableCube(RenderResource *db,Material *mtl,const CubeCreateInfo *cci);
2019-06-17 10:37:59 +08:00
2019-05-27 22:48:01 +08:00
/**
* (线)
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableBoundingBox(RenderResource *db,Material *mtl,const CubeCreateInfo *cci);
/**
* 0,0,01()
2019-05-27 22:48:01 +08:00
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableSphere(RenderResource *db,Material *mtl,const uint numberSlices);
2019-06-17 20:25:44 +08:00
struct DomeCreateInfo
{
float radius;
uint numberSlices;
};//struct DomeCreateInfo
/**
* ()
2019-06-17 20:25:44 +08:00
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableDome(RenderResource *db,Material *mtl, const DomeCreateInfo *);
2019-06-17 20:25:44 +08:00
struct TorusCreateInfo
{
float innerRadius,
outerRadius;
uint numberSlices,
numberStacks;
};//struct TorusCreateInfo
/**
* ()
2019-06-17 20:25:44 +08:00
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableTorus(RenderResource *db,Material *mtl,const TorusCreateInfo *tci);
2019-06-17 20:25:44 +08:00
struct CylinderCreateInfo
{
float halfExtend, //高度
radius; //半径
uint numberSlices;
};//struct CylinderCreateInfo
/**
* ()
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableCylinder(RenderResource *db,Material *mtl,const CylinderCreateInfo *cci);
2019-06-17 20:25:44 +08:00
struct ConeCreateInfo
{
float halfExtend, //高度
radius; //半径
uint numberSlices, //圆切分精度
numberStacks; //柱高层数
};//struct ConeCreateInfo
/**
* ()
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableCone(RenderResource *db,Material *mtl,const ConeCreateInfo *cci);
struct AxisCreateInfo
{
Vector3f root;
Vector3f size;
Color4f color[3];
public:
void RestartColor()
{
color[0].Set(1,0,0,1);
color[1].Set(0,1,0,1);
color[2].Set(0,0,1,1);
}
void Set(const AABB &box)
{
root=box.CenterPoint().xyz();
size=box.HalfSize().xyz();
}
AxisCreateInfo()
{
root.Set(0,0,0);
size.Set(1,1,1);
RestartColor();
}
AxisCreateInfo(const AABB &box)
{
Set(box);
RestartColor();
}
};//struct AxisCreateInfo
/**
* 线(线)
*/
2020-10-21 12:47:06 +08:00
Renderable *CreateRenderableAxis(RenderResource *db,Material *mtl,const AxisCreateInfo *aci);
2019-05-24 19:28:27 +08:00
}//namespace graph
};//namespace hgl
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE