Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Обрізання

Вузли GUI можна використовувати як вузли обрізання (clipping) — маски, що керують рендерингом інших вузлів. У цьому посібнику пояснено, як працює ця можливість.

Створення вузла обрізання

Для обрізання можна використовувати вузли Box, Text і Pie. Щоб створити вузол обрізання, додайте вузол до GUI, а потім налаштуйте його властивості відповідним чином:

Clipping Mode
Режим обрізання.
  • None відображає вузол без обрізання.
  • Stencil змушує вузол записувати дані в поточну трафаретну маску.
Clipping Visible
Увімкніть, щоб відображати вміст вузла.
Clipping Inverted
Увімкніть, щоб записувати в маску інверсію форми вузла.

Потім додайте вузли, які потрібно обрізати, як дочірні до вузла обрізання.

Створення обрізання

Трафаретна маска

Обрізання працює завдяки тому, що вузли записують дані в трафаретний буфер (stencil buffer). Цей буфер містить маски обрізання: інформацію, яка вказує відеокарті, чи слід відображати піксель.

  • Вузол, який не має батьківського вузла обрізання, але має режим обрізання Stencil, записує свою форму (або її інверсію) у нову маску обрізання, що зберігається в трафаретному буфері.
  • Якщо вузол обрізання має батьківський вузол обрізання, він натомість обрізає маску батьківського вузла. Дочірній вузол обрізання ніколи не може розширити поточну маску обрізання, а лише обрізати її ще більше.
  • Вузли без обрізання, які є дочірніми до вузлів обрізання, відображаються з маскою обрізання, створеною ієрархією батьківських вузлів.

Ієрархія обрізання

Тут три вузли утворюють ієрархію:

  • Шестикутник і квадрат є вузлами трафаретного обрізання.
  • Шестикутник створює нову маску обрізання, а квадрат обрізає її ще більше.
  • Вузол у формі круга — це звичайний вузол Pie, тому він відображається з маскою обрізання, створеною його батьківськими вузлами обрізання.

Для цієї ієрархії можливі чотири комбінації звичайних та інвертованих вузлів обрізання. Зелена область позначає частину круга, яка відображається. Решта замаскована:

Трафаретні маски

Обмеження трафаретного обрізання

  • Загальна кількість вузлів трафаретного обрізання не може перевищувати 256.
  • Максимальна глибина вкладеності дочірніх трафаретних вузлів становить 8 рівнів. (Враховуються лише вузли з трафаретним обрізанням.)
  • Максимальна кількість трафаретних вузлів зі спільним батьківським вузлом становить 127. На кожному наступному рівні ієрархії трафаретів це обмеження зменшується вдвічі.
  • Інвертовані вузли потребують більше ресурсів. Кількість інвертованих вузлів обрізання обмежена 8, і кожен із них удвічі зменшує максимальну кількість неінвертованих вузлів обрізання.
  • Трафарети формують трафаретну маску з геометрії вузла (а не з текстури). Маску можна інвертувати, увімкнувши властивість Inverted clipper.

Шари

Шари можна використовувати для керування порядком рендерингу вузлів (і їх об’єднанням у пакети). Коли шари використовуються разом із вузлами обрізання, звичайний порядок шарів перевизначається. Порядок шарів завжди має пріоритет над порядком обрізання — якщо призначення шарів поєднується з вузлами обрізання, обрізання може відбуватися не за порядком ієрархії, коли батьківський вузол з увімкненим обрізанням належить до вищого шару, ніж його дочірні вузли. Дочірні вузли без призначеного шару й надалі дотримуються ієрархії, тож відображаються та обрізаються після батьківського вузла.

Вузол обрізання та його ієрархія відображаються першими, якщо йому призначено шар, і у звичайному порядку, якщо шар не призначено.

Шари та обрізання

У цьому прикладі обидва вузли обрізання Donut BG та BG використовують той самий шар 1. Порядок їхнього рендерингу відповідає порядку в ієрархії, де Donut BG відображається перед BG. Проте дочірньому вузлу Donut Shadow призначено шар 2, який має вищий порядок, тому цей вузол відображатиметься після обох вузлів обрізання. У цьому випадку порядок рендерингу буде таким:

  • Donut BG
  • BG
  • BG Frame
  • Donut Shadow

Тут видно, що через шари об’єкт Donut Shadow обрізатиметься обома вузлами обрізання, хоча він є дочірнім лише до одного з них.