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);
|
mtl::Material3DCreateConfig cfg(device->GetDeviceAttribute(),"VertexLuminance3D",Prim::Lines);
|
||||||
|
|
||||||
cfg.local_to_world=true;
|
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);
|
if(!material)return(false);
|
||||||
|
|
||||||
Color4f GridColor;
|
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()
|
void Restart()
|
||||||
{
|
{
|
||||||
|
@ -169,7 +169,10 @@ namespace hgl
|
|||||||
if(!pc->Init("PlaneGrid",((pgci->grid_size.Width()+1)+(pgci->grid_size.Height()+1))*2,0))
|
if(!pc->Init("PlaneGrid",((pgci->grid_size.Width()+1)+(pgci->grid_size.Height()+1))*2,0))
|
||||||
return(nullptr);
|
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 right=float(pgci->grid_size.Width())/2.0f;
|
||||||
const float left =-right;
|
const float left =-right;
|
||||||
@ -179,14 +182,14 @@ namespace hgl
|
|||||||
|
|
||||||
for(uint row=0;row<=pgci->grid_size.Height();row++)
|
for(uint row=0;row<=pgci->grid_size.Height();row++)
|
||||||
{
|
{
|
||||||
vertex->WriteLine( Vector3f(left ,top+row,0),
|
vertex->WriteLine( Vector2f(left ,top+row),
|
||||||
Vector3f(right,top+row,0));
|
Vector2f(right,top+row));
|
||||||
}
|
}
|
||||||
|
|
||||||
for(uint col=0;col<=pgci->grid_size.Width();col++)
|
for(uint col=0;col<=pgci->grid_size.Width();col++)
|
||||||
{
|
{
|
||||||
vertex->WriteLine(Vector3f(left+col,top, 0),
|
vertex->WriteLine(Vector2f(left+col,top ),
|
||||||
Vector3f(left+col,bottom,0));
|
Vector2f(left+col,bottom));
|
||||||
}
|
}
|
||||||
|
|
||||||
VABMap1f lum(pc,VAN::Luminance);
|
VABMap1f lum(pc,VAN::Luminance);
|
||||||
|
@ -33,10 +33,20 @@ bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc)
|
|||||||
{
|
{
|
||||||
mci->SetLocalToWorld(VK_SHADER_STAGE_ALL_GRAPHICS);
|
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
|
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
|
if(cfg->camera
|
||||||
&&cfg->local_to_world)
|
&&cfg->local_to_world)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include<hgl/graph/mtl/StdMaterial.h>
|
#include<hgl/graph/mtl/StdMaterial.h>
|
||||||
#include<hgl/graph/CoordinateSystem.h>
|
#include<hgl/graph/CoordinateSystem.h>
|
||||||
@ -7,78 +7,26 @@ namespace func
|
|||||||
{
|
{
|
||||||
constexpr const char *GetPosition2D[size_t(CoordinateSystem2D::RANGE_SIZE)]=
|
constexpr const char *GetPosition2D[size_t(CoordinateSystem2D::RANGE_SIZE)]=
|
||||||
{
|
{
|
||||||
R"(
|
"vec4 GetPosition2D(){return vec4(Position,0,1);}", //NDC
|
||||||
vec4 GetPosition2D()
|
"vec4 GetPosition2D(){return vec4(Position.xy*2-1,0,1);}", //ZeroToOne
|
||||||
{
|
"vec4 GetPosition2D(){return viewport.ortho_matrix*vec4(Position,0,1);}" //Ortho
|
||||||
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);
|
|
||||||
}
|
|
||||||
)"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr const char *GetPosition2DL2W[size_t(CoordinateSystem2D::RANGE_SIZE)]=
|
constexpr const char *GetPosition2DL2W[size_t(CoordinateSystem2D::RANGE_SIZE)]=
|
||||||
{
|
{
|
||||||
R"(
|
"vec4 GetPosition2D(){return GetLocalToWorld()*vec4(Position,0,1);}", //NDC
|
||||||
vec4 GetPosition2D()
|
"vec4 GetPosition2D(){return GetLocalToWorld()*vec4(Position.xy*2-1,0,1);}", //ZeroToOne
|
||||||
{
|
"vec4 GetPosition2D(){return GetLocalToWorld()*viewport.ortho_matrix*vec4(Position,0,1);}" //Ortho
|
||||||
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);
|
|
||||||
}
|
|
||||||
)"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr const char *GetPosition3D=R"(
|
constexpr const char *GetPosition3D ="vec4 GetPosition3D(){return vec4(Position,1);}";
|
||||||
vec4 GetPosition3D()
|
constexpr const char *GetPosition3DL2W ="vec4 GetPosition3D(){return GetLocalToWorld()*vec4(Position,1);}";
|
||||||
{
|
constexpr const char *GetPosition3DCamera ="vec4 GetPosition3D(){return camera.vp*vec4(Position,1);}";
|
||||||
return vec4(Position,1);
|
constexpr const char *GetPosition3DL2WCamera ="vec4 GetPosition3D(){return camera.vp*GetLocalToWorld()*vec4(Position,1);}";
|
||||||
}
|
|
||||||
)";
|
|
||||||
|
|
||||||
constexpr const char *GetPosition3DL2W=R"(
|
constexpr const char *GetPosition3DBy2D ="vec4 GetPosition3D(){return vec4(Position,0,1);}";
|
||||||
vec4 GetPosition3D()
|
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);}";
|
||||||
return GetLocalToWorld()*vec4(Position,1);
|
constexpr const char *GetPosition3DL2WCameraBy2D="vec4 GetPosition3D(){return camera.vp*GetLocalToWorld()*vec4(Position,0,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);
|
|
||||||
}
|
|
||||||
)";
|
|
||||||
}//namespace func
|
}//namespace func
|
||||||
STD_MTL_NAMESPACE_END
|
STD_MTL_NAMESPACE_END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user