PlaneGrid use 2d position format instead of 3d.
This commit is contained in:
parent
c1d54628d1
commit
cd4733a491
@ -28,8 +28,9 @@ private:
|
||||
mtl::Material3DCreateConfig cfg(device->GetDeviceAttribute(),"VertexLuminance3D",Prim::Lines);
|
||||
|
||||
cfg.local_to_world=true;
|
||||
cfg.position_format=VAT_VEC2;
|
||||
|
||||
material=db->LoadMaterial("Std3D/VertexLum3D",&cfg);
|
||||
material=db->LoadMaterial("Std3D/VertexLum2D",&cfg);
|
||||
if(!material)return(false);
|
||||
|
||||
Color4f GridColor;
|
||||
|
@ -155,7 +155,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
const bool IsValid()const{ return map_ptr?map_ptr:false; }
|
||||
const bool IsValid()const{ return map_ptr; }
|
||||
|
||||
void Restart()
|
||||
{
|
||||
|
@ -169,7 +169,10 @@ namespace hgl
|
||||
if(!pc->Init("PlaneGrid",((pgci->grid_size.Width()+1)+(pgci->grid_size.Height()+1))*2,0))
|
||||
return(nullptr);
|
||||
|
||||
VABMap3f vertex(pc,VAN::Position);
|
||||
VABMap2f vertex(pc,VAN::Position);
|
||||
|
||||
if(!vertex.IsValid())
|
||||
return(nullptr);
|
||||
|
||||
const float right=float(pgci->grid_size.Width())/2.0f;
|
||||
const float left =-right;
|
||||
@ -179,14 +182,14 @@ namespace hgl
|
||||
|
||||
for(uint row=0;row<=pgci->grid_size.Height();row++)
|
||||
{
|
||||
vertex->WriteLine( Vector3f(left ,top+row,0),
|
||||
Vector3f(right,top+row,0));
|
||||
vertex->WriteLine( Vector2f(left ,top+row),
|
||||
Vector2f(right,top+row));
|
||||
}
|
||||
|
||||
for(uint col=0;col<=pgci->grid_size.Width();col++)
|
||||
{
|
||||
vertex->WriteLine(Vector3f(left+col,top, 0),
|
||||
Vector3f(left+col,bottom,0));
|
||||
vertex->WriteLine(Vector2f(left+col,top ),
|
||||
Vector2f(left+col,bottom));
|
||||
}
|
||||
|
||||
VABMap1f lum(pc,VAN::Luminance);
|
||||
|
@ -33,10 +33,20 @@ bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc)
|
||||
{
|
||||
mci->SetLocalToWorld(VK_SHADER_STAGE_ALL_GRAPHICS);
|
||||
|
||||
vsc->AddFunction(cfg->camera?func::GetPosition3DL2WCamera:func::GetPosition3DL2W);
|
||||
if(cfg->position_format.vec_size==3)
|
||||
vsc->AddFunction(cfg->camera?func::GetPosition3DL2WCamera:func::GetPosition3DL2W);
|
||||
else
|
||||
if(cfg->position_format.vec_size==2)
|
||||
vsc->AddFunction(cfg->camera?func::GetPosition3DL2WCameraBy2D:func::GetPosition3DL2WBy2D);
|
||||
}
|
||||
else
|
||||
vsc->AddFunction(cfg->camera?func::GetPosition3DCamera:func::GetPosition3D);
|
||||
{
|
||||
if(cfg->position_format.vec_size==3)
|
||||
vsc->AddFunction(cfg->camera?func::GetPosition3DCamera:func::GetPosition3D);
|
||||
else
|
||||
if(cfg->position_format.vec_size==2)
|
||||
vsc->AddFunction(cfg->camera?func::GetPosition3DCameraBy2D:func::GetPosition3DBy2D);
|
||||
}
|
||||
|
||||
if(cfg->camera
|
||||
&&cfg->local_to_world)
|
||||
|
@ -1,4 +1,4 @@
|
||||
#pragma once
|
||||
#pragma once
|
||||
|
||||
#include<hgl/graph/mtl/StdMaterial.h>
|
||||
#include<hgl/graph/CoordinateSystem.h>
|
||||
@ -7,78 +7,26 @@ namespace func
|
||||
{
|
||||
constexpr const char *GetPosition2D[size_t(CoordinateSystem2D::RANGE_SIZE)]=
|
||||
{
|
||||
R"(
|
||||
vec4 GetPosition2D()
|
||||
{
|
||||
return vec4(Position,0,1);
|
||||
}
|
||||
)",
|
||||
|
||||
R"(
|
||||
vec4 GetPosition2D()
|
||||
{
|
||||
return vec4(Position.xy*2-1,0,1);
|
||||
}
|
||||
)",
|
||||
|
||||
R"(
|
||||
vec4 GetPosition2D()
|
||||
{
|
||||
return viewport.ortho_matrix*vec4(Position,0,1);
|
||||
}
|
||||
)"
|
||||
"vec4 GetPosition2D(){return vec4(Position,0,1);}", //NDC
|
||||
"vec4 GetPosition2D(){return vec4(Position.xy*2-1,0,1);}", //ZeroToOne
|
||||
"vec4 GetPosition2D(){return viewport.ortho_matrix*vec4(Position,0,1);}" //Ortho
|
||||
};
|
||||
|
||||
constexpr const char *GetPosition2DL2W[size_t(CoordinateSystem2D::RANGE_SIZE)]=
|
||||
{
|
||||
R"(
|
||||
vec4 GetPosition2D()
|
||||
{
|
||||
return GetLocalToWorld()*vec4(Position,0,1);
|
||||
}
|
||||
)",
|
||||
|
||||
R"(
|
||||
vec4 GetPosition2D()
|
||||
{
|
||||
return GetLocalToWorld()*vec4(Position.xy*2-1,0,1);
|
||||
}
|
||||
)",
|
||||
|
||||
R"(
|
||||
vec4 GetPosition2D()
|
||||
{
|
||||
return GetLocalToWorld()*viewport.ortho_matrix*vec4(Position,0,1);
|
||||
}
|
||||
)"
|
||||
"vec4 GetPosition2D(){return GetLocalToWorld()*vec4(Position,0,1);}", //NDC
|
||||
"vec4 GetPosition2D(){return GetLocalToWorld()*vec4(Position.xy*2-1,0,1);}", //ZeroToOne
|
||||
"vec4 GetPosition2D(){return GetLocalToWorld()*viewport.ortho_matrix*vec4(Position,0,1);}" //Ortho
|
||||
};
|
||||
|
||||
constexpr const char *GetPosition3D=R"(
|
||||
vec4 GetPosition3D()
|
||||
{
|
||||
return vec4(Position,1);
|
||||
}
|
||||
)";
|
||||
constexpr const char *GetPosition3D ="vec4 GetPosition3D(){return vec4(Position,1);}";
|
||||
constexpr const char *GetPosition3DL2W ="vec4 GetPosition3D(){return GetLocalToWorld()*vec4(Position,1);}";
|
||||
constexpr const char *GetPosition3DCamera ="vec4 GetPosition3D(){return camera.vp*vec4(Position,1);}";
|
||||
constexpr const char *GetPosition3DL2WCamera ="vec4 GetPosition3D(){return camera.vp*GetLocalToWorld()*vec4(Position,1);}";
|
||||
|
||||
constexpr const char *GetPosition3DL2W=R"(
|
||||
vec4 GetPosition3D()
|
||||
{
|
||||
return GetLocalToWorld()*vec4(Position,1);
|
||||
}
|
||||
)";
|
||||
|
||||
constexpr const char *GetPosition3DCamera=R"(
|
||||
vec4 GetPosition3D()
|
||||
{
|
||||
return camera.vp*vec4(Position,1);
|
||||
}
|
||||
)";
|
||||
|
||||
constexpr const char *GetPosition3DL2WCamera=R"(
|
||||
vec4 GetPosition3D()
|
||||
{
|
||||
return camera.vp*GetLocalToWorld()*vec4(Position,1);
|
||||
}
|
||||
)";
|
||||
constexpr const char *GetPosition3DBy2D ="vec4 GetPosition3D(){return vec4(Position,0,1);}";
|
||||
constexpr const char *GetPosition3DL2WBy2D ="vec4 GetPosition3D(){return GetLocalToWorld()*vec4(Position,0,1);}";
|
||||
constexpr const char *GetPosition3DCameraBy2D ="vec4 GetPosition3D(){return camera.vp*vec4(Position,0,1);}";
|
||||
constexpr const char *GetPosition3DL2WCameraBy2D="vec4 GetPosition3D(){return camera.vp*GetLocalToWorld()*vec4(Position,0,1);}";
|
||||
}//namespace func
|
||||
STD_MTL_NAMESPACE_END
|
||||
|
Loading…
x
Reference in New Issue
Block a user