Add builtin unlit surface path
This commit is contained in:
24
engine/assets/builtin/shaders/unlit/unlit.frag.glsl
Normal file
24
engine/assets/builtin/shaders/unlit/unlit.frag.glsl
Normal file
@@ -0,0 +1,24 @@
|
||||
// XC_BUILTIN_UNLIT_OPENGL_PS
|
||||
#version 430
|
||||
layout(binding = 1) uniform sampler2D uBaseColorTexture;
|
||||
|
||||
layout(std140, binding = 1) uniform PerObjectConstants {
|
||||
mat4 gProjectionMatrix;
|
||||
mat4 gViewMatrix;
|
||||
mat4 gModelMatrix;
|
||||
mat4 gNormalMatrix;
|
||||
vec4 gMainLightDirectionAndIntensity;
|
||||
vec4 gMainLightColorAndFlags;
|
||||
};
|
||||
|
||||
layout(std140, binding = 2) uniform MaterialConstants {
|
||||
vec4 gBaseColorFactor;
|
||||
};
|
||||
|
||||
in vec2 vTexCoord;
|
||||
|
||||
layout(location = 0) out vec4 fragColor;
|
||||
|
||||
void main() {
|
||||
fragColor = texture(uBaseColorTexture, vTexCoord) * gBaseColorFactor;
|
||||
}
|
||||
25
engine/assets/builtin/shaders/unlit/unlit.frag.vk.glsl
Normal file
25
engine/assets/builtin/shaders/unlit/unlit.frag.vk.glsl
Normal file
@@ -0,0 +1,25 @@
|
||||
// XC_BUILTIN_UNLIT_VULKAN_PS
|
||||
#version 450
|
||||
layout(set = 3, binding = 0) uniform texture2D uBaseColorTexture;
|
||||
layout(set = 4, binding = 0) uniform sampler uLinearSampler;
|
||||
|
||||
layout(set = 1, binding = 0, std140) uniform PerObjectConstants {
|
||||
mat4 gProjectionMatrix;
|
||||
mat4 gViewMatrix;
|
||||
mat4 gModelMatrix;
|
||||
mat4 gNormalMatrix;
|
||||
vec4 gMainLightDirectionAndIntensity;
|
||||
vec4 gMainLightColorAndFlags;
|
||||
};
|
||||
|
||||
layout(set = 2, binding = 0, std140) uniform MaterialConstants {
|
||||
vec4 gBaseColorFactor;
|
||||
};
|
||||
|
||||
layout(location = 0) in vec2 vTexCoord;
|
||||
|
||||
layout(location = 0) out vec4 fragColor;
|
||||
|
||||
void main() {
|
||||
fragColor = texture(sampler2D(uBaseColorTexture, uLinearSampler), vTexCoord) * gBaseColorFactor;
|
||||
}
|
||||
25
engine/assets/builtin/shaders/unlit/unlit.ps.hlsl
Normal file
25
engine/assets/builtin/shaders/unlit/unlit.ps.hlsl
Normal file
@@ -0,0 +1,25 @@
|
||||
// XC_BUILTIN_UNLIT_D3D12_PS
|
||||
Texture2D gBaseColorTexture : register(t1);
|
||||
SamplerState gLinearSampler : register(s1);
|
||||
|
||||
cbuffer PerObjectConstants : register(b1) {
|
||||
float4x4 gProjectionMatrix;
|
||||
float4x4 gViewMatrix;
|
||||
float4x4 gModelMatrix;
|
||||
float4x4 gNormalMatrix;
|
||||
float4 gMainLightDirectionAndIntensity;
|
||||
float4 gMainLightColorAndFlags;
|
||||
};
|
||||
|
||||
cbuffer MaterialConstants : register(b2) {
|
||||
float4 gBaseColorFactor;
|
||||
};
|
||||
|
||||
struct PSInput {
|
||||
float4 position : SV_POSITION;
|
||||
float2 texcoord : TEXCOORD0;
|
||||
};
|
||||
|
||||
float4 MainPS(PSInput input) : SV_TARGET {
|
||||
return gBaseColorTexture.Sample(gLinearSampler, input.texcoord) * gBaseColorFactor;
|
||||
}
|
||||
99
engine/assets/builtin/shaders/unlit/unlit.shader
Normal file
99
engine/assets/builtin/shaders/unlit/unlit.shader
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"name": "Builtin Unlit",
|
||||
"properties": [
|
||||
{
|
||||
"name": "_BaseColor",
|
||||
"displayName": "Base Color",
|
||||
"type": "Color",
|
||||
"defaultValue": "(1,1,1,1)",
|
||||
"semantic": "BaseColor"
|
||||
},
|
||||
{
|
||||
"name": "_MainTex",
|
||||
"displayName": "Base Map",
|
||||
"type": "2D",
|
||||
"defaultValue": "white",
|
||||
"semantic": "BaseColorTexture"
|
||||
}
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "Unlit",
|
||||
"tags": {
|
||||
"LightMode": "Unlit"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"name": "PerObjectConstants",
|
||||
"type": "ConstantBuffer",
|
||||
"set": 1,
|
||||
"binding": 0,
|
||||
"semantic": "PerObject"
|
||||
},
|
||||
{
|
||||
"name": "MaterialConstants",
|
||||
"type": "ConstantBuffer",
|
||||
"set": 2,
|
||||
"binding": 0,
|
||||
"semantic": "Material"
|
||||
},
|
||||
{
|
||||
"name": "BaseColorTexture",
|
||||
"type": "Texture2D",
|
||||
"set": 3,
|
||||
"binding": 0,
|
||||
"semantic": "BaseColorTexture"
|
||||
},
|
||||
{
|
||||
"name": "LinearClampSampler",
|
||||
"type": "Sampler",
|
||||
"set": 4,
|
||||
"binding": 0,
|
||||
"semantic": "LinearClampSampler"
|
||||
}
|
||||
],
|
||||
"variants": [
|
||||
{
|
||||
"stage": "Vertex",
|
||||
"backend": "D3D12",
|
||||
"language": "HLSL",
|
||||
"source": "unlit.vs.hlsl",
|
||||
"entryPoint": "MainVS",
|
||||
"profile": "vs_5_0"
|
||||
},
|
||||
{
|
||||
"stage": "Fragment",
|
||||
"backend": "D3D12",
|
||||
"language": "HLSL",
|
||||
"source": "unlit.ps.hlsl",
|
||||
"entryPoint": "MainPS",
|
||||
"profile": "ps_5_0"
|
||||
},
|
||||
{
|
||||
"stage": "Vertex",
|
||||
"backend": "OpenGL",
|
||||
"language": "GLSL",
|
||||
"source": "unlit.vert.glsl"
|
||||
},
|
||||
{
|
||||
"stage": "Fragment",
|
||||
"backend": "OpenGL",
|
||||
"language": "GLSL",
|
||||
"source": "unlit.frag.glsl"
|
||||
},
|
||||
{
|
||||
"stage": "Vertex",
|
||||
"backend": "Vulkan",
|
||||
"language": "GLSL",
|
||||
"source": "unlit.vert.vk.glsl"
|
||||
},
|
||||
{
|
||||
"stage": "Fragment",
|
||||
"backend": "Vulkan",
|
||||
"language": "GLSL",
|
||||
"source": "unlit.frag.vk.glsl"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
23
engine/assets/builtin/shaders/unlit/unlit.vert.glsl
Normal file
23
engine/assets/builtin/shaders/unlit/unlit.vert.glsl
Normal file
@@ -0,0 +1,23 @@
|
||||
// XC_BUILTIN_UNLIT_OPENGL_VS
|
||||
#version 430
|
||||
layout(location = 0) in vec3 aPosition;
|
||||
layout(location = 1) in vec3 aNormal;
|
||||
layout(location = 2) in vec2 aTexCoord;
|
||||
|
||||
layout(std140, binding = 1) uniform PerObjectConstants {
|
||||
mat4 gProjectionMatrix;
|
||||
mat4 gViewMatrix;
|
||||
mat4 gModelMatrix;
|
||||
mat4 gNormalMatrix;
|
||||
vec4 gMainLightDirectionAndIntensity;
|
||||
vec4 gMainLightColorAndFlags;
|
||||
};
|
||||
|
||||
out vec2 vTexCoord;
|
||||
|
||||
void main() {
|
||||
vec4 positionWS = gModelMatrix * vec4(aPosition, 1.0);
|
||||
vec4 positionVS = gViewMatrix * positionWS;
|
||||
gl_Position = gProjectionMatrix * positionVS;
|
||||
vTexCoord = aTexCoord;
|
||||
}
|
||||
23
engine/assets/builtin/shaders/unlit/unlit.vert.vk.glsl
Normal file
23
engine/assets/builtin/shaders/unlit/unlit.vert.vk.glsl
Normal file
@@ -0,0 +1,23 @@
|
||||
// XC_BUILTIN_UNLIT_VULKAN_VS
|
||||
#version 450
|
||||
layout(location = 0) in vec3 aPosition;
|
||||
layout(location = 1) in vec3 aNormal;
|
||||
layout(location = 2) in vec2 aTexCoord;
|
||||
|
||||
layout(set = 1, binding = 0, std140) uniform PerObjectConstants {
|
||||
mat4 gProjectionMatrix;
|
||||
mat4 gViewMatrix;
|
||||
mat4 gModelMatrix;
|
||||
mat4 gNormalMatrix;
|
||||
vec4 gMainLightDirectionAndIntensity;
|
||||
vec4 gMainLightColorAndFlags;
|
||||
};
|
||||
|
||||
layout(location = 0) out vec2 vTexCoord;
|
||||
|
||||
void main() {
|
||||
vec4 positionWS = gModelMatrix * vec4(aPosition, 1.0);
|
||||
vec4 positionVS = gViewMatrix * positionWS;
|
||||
gl_Position = gProjectionMatrix * positionVS;
|
||||
vTexCoord = aTexCoord;
|
||||
}
|
||||
29
engine/assets/builtin/shaders/unlit/unlit.vs.hlsl
Normal file
29
engine/assets/builtin/shaders/unlit/unlit.vs.hlsl
Normal file
@@ -0,0 +1,29 @@
|
||||
// XC_BUILTIN_UNLIT_D3D12_VS
|
||||
cbuffer PerObjectConstants : register(b1) {
|
||||
float4x4 gProjectionMatrix;
|
||||
float4x4 gViewMatrix;
|
||||
float4x4 gModelMatrix;
|
||||
float4x4 gNormalMatrix;
|
||||
float4 gMainLightDirectionAndIntensity;
|
||||
float4 gMainLightColorAndFlags;
|
||||
};
|
||||
|
||||
struct VSInput {
|
||||
float3 position : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float2 texcoord : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct PSInput {
|
||||
float4 position : SV_POSITION;
|
||||
float2 texcoord : TEXCOORD0;
|
||||
};
|
||||
|
||||
PSInput MainVS(VSInput input) {
|
||||
PSInput output;
|
||||
float4 positionWS = mul(gModelMatrix, float4(input.position, 1.0f));
|
||||
float4 positionVS = mul(gViewMatrix, positionWS);
|
||||
output.position = mul(gProjectionMatrix, positionVS);
|
||||
output.texcoord = input.texcoord;
|
||||
return output;
|
||||
}
|
||||
Reference in New Issue
Block a user