Shader: Add support for FragCoord builtin

This commit is contained in:
Jérôme Leclercq 2021-05-26 22:17:07 +02:00
parent 68447ef0da
commit e7a2573221
5 changed files with 14 additions and 2 deletions

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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 }
}; };

View File

@ -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 } }
}; };