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