Можно ли избежать растягивания вертикальной текстуры с помощью этого шейдера Unity?

Как сказано Guffa

Компонентный документ сам по себе является документом, и вы не можете использовать html для создания поддоку.

Но html может содержать iframe который является суб-документом и имеет html-тег.

0
задан Merlin 16 January 2019 в 00:59
поделиться

1 ответ

Для этого вам нужно трипланарное картирование. Принцип заключается в том, что вы проецируете текстуру на плоскость XZ, как вы это делали, но затем вы также проецируете ее на плоскости ZY и XY. Наконец, вы используете нормаль поверхности (обычно квадрат многократно), чтобы смешать текстуры (умножить и сложить).

Вот как выглядит функция смешивания:

inline float3 TriplanarBlendFactor(half3 normal) {
    float3 bf = pow(abs(normal), 6);
    bf /= dot(bf, (float3)1);
    return bf;
}

Затем просто скомбинируйте образцы текстур следующим образом:

fixed4 cx = tex2D(tex, tx) * blendFactor.x;
fixed4 cy = tex2D(tex, ty) * blendFactor.y;
fixed4 cz = tex2D(tex, tz) * blendFactor.z;
fixed4 finalColor = cx + cy + cz;

Вы можете выставить мощность функции смешивания как шейдер свойство, если вы хотите контролировать расстояние смешивания.

0
ответ дан Kalle Halvarsson 16 January 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: