feat: re-add uvScale, vertexScale to unlit material

This commit is contained in:
Nick Fisher
2024-11-21 12:30:20 +08:00
parent bc8edb7eb4
commit b7bc46b94a
6 changed files with 4772 additions and 7060 deletions

View File

@@ -13,6 +13,14 @@ material {
{
type : int,
name : baseColorIndex
},
{
type: float2,
name: uvScale
},
{
type: float,
name: vertexScale
}
],
depthWrite : true,
@@ -24,15 +32,25 @@ material {
vertexDomain: object,
}
fragment {
void material(inout MaterialInputs material) {
prepareMaterial(material);
material.baseColor = materialParams.baseColorFactor;
if (materialParams.baseColorIndex > -1) {
highp float2 uv = getUV0();
uv.y = 1.0 - uv.y;
material.baseColor *= texture(materialParams_baseColorMap, uv);
}
fragment {
void material(inout MaterialInputs material) {
prepareMaterial(material);
material.baseColor = materialParams.baseColorFactor;
if (materialParams.baseColorIndex > -1) {
highp float2 uv = getUV0();
uv.y = 1.0 - uv.y;
uv *= materialParams.uvScale;
material.baseColor *= texture(materialParams_baseColorMap, uv);
}
}
}
vertex {
void materialVertex(inout MaterialVertexInputs material) {
float4 position = getPosition();
position.xyz *= materialParams.vertexScale;
material.worldPosition = getWorldFromModelMatrix() * position;
}
}

View File

@@ -36,6 +36,8 @@ public:
const char* extras = nullptr) override {
auto instance = mUnlitMaterial->createInstance();
instance->setParameter("baseColorIndex", -1);
instance->setParameter("vertexScale", 1.0f);
instance->setParameter("uvScale", filament::math::float2 { 1.0f, 1.0f });
return instance;
}

View File

@@ -8,5 +8,5 @@ UNLIT_PACKAGE:
UNLIT_UNLIT_OFFSET:
.int 0
UNLIT_UNLIT_SIZE:
.int 147641
.int 101492

View File

@@ -8,5 +8,5 @@ _UNLIT_PACKAGE:
_UNLIT_UNLIT_OFFSET:
.int 0
_UNLIT_UNLIT_SIZE:
.int 147641
.int 101492

File diff suppressed because it is too large Load Diff