From f6a136643d4e974eb7194e0952add7a9fa99c19d Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 20 Sep 2024 14:04:43 +0800 Subject: [PATCH] remove image.mat from LFS --- materials/image.mat | 55 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/materials/image.mat b/materials/image.mat index 0775f048..132a8de2 100644 --- a/materials/image.mat +++ b/materials/image.mat @@ -1,3 +1,52 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:273059c97f96c6848807914d937583864445b51d8e0f1cd98c3e4e0e4bd9f411 -size 1451 +material { + name : Image, + parameters : [ + { + type : sampler2d, + name : image + }, + { + type : mat4, + name : transform, + precision : high + }, + { + type : float4, + name : backgroundColor + }, + { + type : int, + name : showImage + } + ], + variables : [ + imageUV + ], + vertexDomain : device, + depthWrite : false, + shadingModel : unlit, + variantFilter : [ skinning, shadowReceiver, vsm ], + culling: none +} + +vertex { + void materialVertex(inout MaterialVertexInputs material) { + material.imageUV.st = getPosition().st * 0.5 + 0.5; + } +} + +fragment { + void material(inout MaterialInputs material) { + prepareMaterial(material); + highp vec2 uv = (materialParams.transform * vec4(saturate(variable_imageUV.st), 1.0, 1.0)).st; + if (materialParams.showImage == 0 || uv.s > 1.0 || uv.s < 0.0 || uv.t < 0.0 || uv.t > 1.0) { + material.baseColor = materialParams.backgroundColor; + } else { + uv.t = 1.0 - uv.t; + vec4 color = max(texture(materialParams_image, uv.st), 0.0); + color.rgb *= color.a; + // Manual, pre-multiplied srcOver with opaque destination optimization + material.baseColor.rgb = color.rgb + materialParams.backgroundColor.rgb * (1.0 - color.a); + } + } +}