» Трансформация текстур
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Трансформация текстур

English

На примитивах

Обратите внимание, что у примитивов Quad (DX9), Segment (DX9), и др. есть пин Texture Transform. Чтобы увиличивать/двигать/поворачивать текстуру на примитиве (а не трансформировать сам примитив), подцепите нод Transform (Transform 2d) к пину Texture Transform. Таким образом вы можете делать любые преобразования.

Так же обратите внимание на пин Sampler State, который принимает ноды Filter (EX9.SamplerState) и Address (EX9.SamplerState).
Address (EX9.SamplerState) интересен в смысле применения трансформаций. Он задает параметры поведения текстуры при выходе за собственные границы, например, если текстура меньше чем квадрат, что вы увидите между границей текстуры и квадрата?
Адрес текстуры задается по U и V (т.е. в горизонтальном и вертикальном направлениях) независимо и может быть одним из 5 вариантов:

  • Wrap - бесконечный простой повтор (как правило задано по умолчанию)
  • Mirror - бесконечный повтор с зеркальным отражением каждой следующей копии
  • Clamp - повтор только крайних пикселей
  • Border - рамка заданного цвета вокруг текстуры, см. пин Border Color
  • MirrorOnce - одно зеркальное отражение, затем повтор пикселей как в Clamp

В эффектах

У большинства эффектов так же есть пин Texture Transform, но у них нет пина Sampler State. Изменить параметры SampleState можно только в коде шейдера, но это очень просто. Клонирйте нужный шейдер, нажав ctrl-enter в списке NodeBrowser. В окне CodeEditor найдите блок описания sampler state, который как правило выглядит так:

sampler Samp = sampler_state
{
    Texture   = (Tex); 
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

Здесь вы можете добавить необходимые параметры, например

sampler Samp = sampler_state 
{
    Texture   = (Tex);          
    MipFilter = LINEAR;         
    MinFilter = LINEAR;
    MagFilter = LINEAR;
    AddressU = BORDER;
    AddressV = MIRROR;
    BorderColor = float4(1, 0, 0, 1); //красная рамка
};

anonymous user login

Shoutbox

~8h ago

joreg: vvvvTv S02E01 is out: Buttons & Sliders with Dear ImGui: https://www.youtube.com/live/PuuTilbqd9w

~7d ago

joreg: vvvvTv S02E00 is out: Sensors & Servos with Arduino: https://visualprogramming.net/blog/2024/vvvvtv-is-back-with-season-2/

~8d ago

fleg: hey there! What's the best tool for remote work? Teamviewer feels terrible. Thanks!

~21d ago

joreg: Last call: 6-session vvvv beginner course starting November 4: https://thenodeinstitute.org/courses/ws24-5-vvvv-beginners-part-i/

~1mth ago

joreg: Missed the last meetup? You can rewatch it here: https://www.youtube.com/live/MdvTa58uxB0?si=Fwi-9hHoCmo794Ag

~1mth ago

theurbankind: When is the next big event, like node festival ?

~1mth ago

~1mth ago

joreg: Join us for the next vvvv meetup on Oktober 17th: https://visualprogramming.net/blog/2024/25.-vvvv-worldwide-meetup/

~1mth ago

joreg: 6 session beginner course part 2 "Deep Dive" starts January 13th: https://thenodeinstitute.org/courses/ws24-5-vvvv-beginners-part-ii/