Graphics: Add support for draw call data (texture overlay)

This commit is contained in:
Jérôme Leclercq
2021-09-05 18:26:12 +02:00
parent 26e5a41dce
commit abdcd63058
16 changed files with 160 additions and 18 deletions

View File

@@ -8,7 +8,7 @@ option ColorLocation: i32 = -1;
option UvLocation: i32 = -1;
const HasVertexColor = (ColorLocation >= 0);
const HasUV = (UvLocation >= 0) && (HasDiffuseTexture || HasAlphaTexture);
const HasUV = (UvLocation >= 0);
[layout(std140)]
struct BasicSettings
@@ -42,9 +42,10 @@ external
{
[set(0), binding(0)] viewerData: uniform<ViewerData>,
[set(1), binding(0)] instanceData: uniform<InstanceData>,
[set(2), binding(0)] settings: uniform<BasicSettings>,
[set(2), binding(2)] MaterialAlphaMap: sampler2D<f32>,
[set(2), binding(1)] MaterialDiffuseMap: sampler2D<f32>
[set(2), binding(0)] TextureOverlay: sampler2D<f32>,
[set(3), binding(0)] settings: uniform<BasicSettings>,
[set(3), binding(2)] MaterialAlphaMap: sampler2D<f32>,
[set(3), binding(1)] MaterialDiffuseMap: sampler2D<f32>
}
// Fragment stage
@@ -64,6 +65,10 @@ fn main(input: FragIn) -> FragOut
{
let diffuseColor = settings.DiffuseColor;
const if (HasUV)
//TODO: diffuseColor *= TextureOverlay.Sample(input.uv);
diffuseColor = diffuseColor * TextureOverlay.Sample(input.uv);
const if (HasVertexColor)
//TODO: diffuseColor *= input.color;
diffuseColor = diffuseColor * input.color;

View File

@@ -36,9 +36,10 @@ external
{
[set(0), binding(0)] viewerData: uniform<ViewerData>,
[set(1), binding(0)] instanceData: uniform<InstanceData>,
[set(2), binding(0)] settings: uniform<BasicSettings>,
[set(2), binding(2)] MaterialAlphaMap: sampler2D<f32>,
[set(2), binding(1)] MaterialDiffuseMap: sampler2D<f32>
[set(2), binding(0)] TextureOverlay: sampler2D<f32>,
[set(3), binding(0)] settings: uniform<BasicSettings>,
[set(3), binding(2)] MaterialAlphaMap: sampler2D<f32>,
[set(3), binding(1)] MaterialDiffuseMap: sampler2D<f32>
}
// Fragment stage
@@ -51,6 +52,11 @@ struct FragIn
fn main(input: FragIn)
{
let alpha = settings.DiffuseColor.a;
const if (HasUV)
//TODO: diffuseColor *= TextureOverlay.Sample(input.uv);
alpha = alpha * TextureOverlay.Sample(input.uv).a;
const if (HasDiffuseTexture)
// TODO: alpha *= MaterialDiffuseMap.Sample(input.uv).a;
alpha = alpha * MaterialDiffuseMap.Sample(input.uv).a;