Shader: Add support for FragCoord builtin
This commit is contained in:
parent
68447ef0da
commit
e7a2573221
|
|
@ -43,7 +43,8 @@ namespace Nz::ShaderAst
|
|||
|
||||
enum class BuiltinEntry
|
||||
{
|
||||
VertexPosition, // gl_Position
|
||||
FragCoord = 1, // gl_FragCoord
|
||||
VertexPosition = 0, // gl_Position
|
||||
};
|
||||
|
||||
enum class ExpressionCategory
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ namespace Nz
|
|||
};
|
||||
|
||||
std::unordered_map<ShaderAst::BuiltinEntry, Builtin> s_builtinMapping = {
|
||||
{ ShaderAst::BuiltinEntry::FragCoord, { "gl_FragCoord", ShaderStageType::Fragment } },
|
||||
{ ShaderAst::BuiltinEntry::VertexPosition, { "gl_Position", ShaderStageType::Vertex } }
|
||||
};
|
||||
}
|
||||
|
|
@ -191,6 +192,10 @@ namespace Nz
|
|||
{
|
||||
switch (builtin)
|
||||
{
|
||||
case ShaderAst::BuiltinEntry::FragCoord:
|
||||
Append("gl_FragCoord");
|
||||
break;
|
||||
|
||||
case ShaderAst::BuiltinEntry::VertexPosition:
|
||||
Append("gl_Position");
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -231,6 +231,10 @@ namespace Nz
|
|||
|
||||
switch (*builtin.builtin)
|
||||
{
|
||||
case ShaderAst::BuiltinEntry::FragCoord:
|
||||
Append("builtin(fragcoord)");
|
||||
break;
|
||||
|
||||
case ShaderAst::BuiltinEntry::VertexPosition:
|
||||
Append("builtin(position)");
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ namespace Nz::ShaderLang
|
|||
};
|
||||
|
||||
std::unordered_map<std::string, ShaderAst::BuiltinEntry> s_builtinMapping = {
|
||||
{ "fragcoord", ShaderAst::BuiltinEntry::FragCoord },
|
||||
{ "position", ShaderAst::BuiltinEntry::VertexPosition }
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@ namespace Nz
|
|||
};
|
||||
|
||||
std::unordered_map<ShaderAst::BuiltinEntry, Builtin> s_builtinMapping = {
|
||||
{ ShaderAst::BuiltinEntry::VertexPosition, { "VertexPosition", ShaderStageType::Vertex, SpirvBuiltIn::Position } }
|
||||
{ ShaderAst::BuiltinEntry::FragCoord, { "FragmentCoordinates", ShaderStageType::Fragment, SpirvBuiltIn::FragCoord } },
|
||||
{ ShaderAst::BuiltinEntry::VertexPosition, { "VertexPosition", ShaderStageType::Vertex, SpirvBuiltIn::Position } }
|
||||
};
|
||||
|
||||
class PreVisitor : public ShaderAst::AstRecursiveVisitor
|
||||
|
|
|
|||
Loading…
Reference in New Issue