Объемный трафарет: Объемные трафареты для стен и потолка своими руками — Сделай сам — 15 апреля — 43696101154

Содержание

Объемные трафареты для стен и потолка своими руками — Сделай сам — 15 апреля — 43696101154

Объемные трафареты для стен и потолка своими руками 

 

Приемы декорирования помещений включают в себя трафаретную роспись, так как она дает возможность украсить стены оригинально, подчеркнуть особенность интерьера. 

Современные материалы позволили создавать красивые и качественные узоры, не беспокоиться о том, что потечет краска и испортит впечатление о рисунке. Сам по себе узор превратился из простого орнамента в художественное произведение, которое не только преображает помещение, но при необходимости скрывает недостатки стен.

Ранее трафареты изготавливались из бумаги, теперь производители выпускают виниловые наклейки, позволяющие точно и аккуратно нанести краску или шпаклевку. Геометрические узоры по-прежнему актуальны, однако включают в себя множество романтических элементов, например, повторяющиеся у изголовья кровати крупные цветы. Таким образом, визуально обозначается зона отдыха, а гармоничный подбор оттенков поддержит стиль комнаты.

Как изготовить трафарет самостоятельно?

 
Отсутствие художественных навыков не станет препятствием к самостоятельному изготовлению шаблона. Эту несложную работу выполнит любой желающий. Основой может служить плотный картон, но лучше взять тонкий пластик, например, от папки для файлов или более толстой пластиковой папки. Рисунок подбирают из любых источников, даже на обоях, оставшихся от ремонта, можно найти подходящий узор. Немало их предлагается в сети интернет, надо лишь распечатать на принтере, разделив на несколько частей, если рисунок крупнее формата бумаги.

Сначала лучше попробовать не очень сложный рисунок, создать, например, трафарет бабочки на стену с однотонной поверхностью. С его помощью можно украсить помещение «сидящими» на стене или потолке бабочками, однотонными или цветными. К ним можно добавить птиц, придумав свой собственный пейзаж. Несколько правил грамотного изготовления шаблона:

На бумагу рисунок наносят мягким карандашом, а на пластик — фломастером или маркером.
Затем надо очень аккуратно вырезать рисунок по линиям, не повредив внутренние перемычки, если они предусмотрены.
Использовать следует обойный нож или маникюрные ножницы с острыми кончиками; если рисунок крупный, применяют обычные ножницы. Вырезать узор следует так, чтобы не было заусенцев, иначе он будет иметь некачественный периметр.
Заготовка готова. Она должна быть ровной, без помятостей, трещин и случайных надрезов.

Даже самые большие трафареты для рисования на стенах можно придумывать и вырезать самостоятельно. Если нет заготовки требуемого размера, рисунок наносится по частям. Изображение деревьев, пейзажей выполняют при помощи шаблона лишь частично, многие мелкие детали дорисовываются кисточкой. Заполнение рисунка краской можно делать также при помощи губки или поролонового валика. При этом важно следить, чтобы они не впитывали в себя много краски, и степень нажима на поверхность должна быть слабой.

 

Разновидности трафаретов

Создание своего шаблона открывает возможности фантазии, позволяет применить разные техники для создания действительно эксклюзивных стен. Простой рисунок, нанесенный краской, может казаться унылым, тогда на помощь приходят другие виды трафаретной росписи на стенах. Возвышаясь над поверхностью выпуклыми элементами, объемный рисунок отличается оригинальными решениями. Приемы таких украшений создают эффект реальности, так как рисунок трафарета наносится при помощи штукатурки.

Многоцветный трафарет выполняют применением не одного, а нескольких оттенков краски. При этом изготавливается несколько образцов шаблона, каждый — для отдельного цвета. Они прикладываются поочередно после полного застывания предыдущего слоя краски.

Антитрафарет образует узор за счет изменения фона вокруг него. Таким образом, рисунок остается того же цвета, что и общий фон стены, но вокруг него выделяют контрастом поверхность. Здесь важно не обозначать границы, а делать переход от насыщенного цвета к полутонам.

 

Технология объемного трафарета

Изготовленный вручную шаблон можно применить для создания объемного рисунка. Он приносит интерьеру особую оригинальность, при этом техника его создания довольно проста, требует лишь аккуратности и соблюдения последовательности. Объемные рисунки на стенах своими руками лучше делать с помощью пластикового шаблона. Он должен легко сниматься со стены после нанесения аэрозольного клея и приклеивания на несколько минут.

Нанести рисунок на поверхность из полихлорвинила, вырезать острым ножом.
Нанести на шаблон аэрозольный клей, приклеить его к стене на заранее размеченном месте.
Создание объемного узора выполняют при помощи акриловой шпаклевки или штукатурки, при этом выбрать можно любую ее разновидность: простая, декоративная, венецианская (Венецианская штукатурка технология нанесения).
Малярным шпателем для работ со штукатуркой наносят слой смеси; движение рукой — уверенное и спокойное.
Закрасив, таким образом, узор шаблона, надо выждать 1 минуту, после этого с угла снять трафарет энергичным движением. Следует отметить, что перед снятием шаблона не следует ждать его полного застывания, так как может нарушиться целостность слоя шпаклевки.

Источник


Объемные трафареты:

Весьма популярный способ декорирования стен, потолков и других поверхностей — это объемный рисунок.Выполняется он обычной или фактурной штукатуркой или объемной краской. Лучше всего это делать при помощи трафарета.

Стандартный трафарет не подходит для объемного рисунка по двум причинам:

Не всякий орнамент можно выполнить в объемной технике. Некоторые настолько ажурные, что не выдержат массы штукатурки.

Пленка обычного трафарета не рассчитана на тяжелый слой штукатурки и трафарет может легко порваться в момент снимания его со стены.

Чем больше Вы хотите толщину узора, тем толще нужен трафарет. Но не надо забывать, что очень толстый трафарет можно и не выдернуть его обратно.

Для объемного рисунка трафаретом вместо кистей мы будем использовать обычные шпатели, плоские тонкие лопаточки –какими всегда работают со штукатуркой. Шпателя берем два – как профессионалы отделочных работ, мы не будем ходить каждый раз к ведру со штукатуркой, а будем пользоваться вторым шпателем, как палитрой.

Поле деятельности – крашенная стена. Однако объемный рисунок трафаретом можно сделать где угодно – даже на потолке. Шпаклевка густая, и не будет капать вниз.

Прикладываем трафарет к стене. Спокойно и уверенно, ровным слоем, шпателем замазываем трафарет штукатуркой. Не спешим, ибо все равно это быстро.

Сразу после того, как положили шпатель в сторону, трафарет со стены снимаем.

Прошла минута и объемный рисунок на стене готов! Остается только отмыть трафарет, пока штукатурка на нем не застыла. Объемный рисунок на стене трафаретом может быть, каким угодно — узором, картинкой, бордюром, обоями. Один и тот же трафарет можно нанести по-разному.

Если нужна текстура на рисунке:

Это совсем не сложно. Декоративная штукатурка сохнет часа три, есть много времени, чтобы, вооружившись жесткой малярной кисточкой, оставить на поверхности штукатурки текстуру. Например — так можно нарисовать крылья или листик.

Обратите внимание: сняв трафарет, вы увидите на краях рельефного рисунка вытянутые»реснички» из штукатурки. Не переживайте — это совершенно нормальное явление. Даже если они огромные (что обязательно будет, если Вы хотите рисунок большой толщины), от них не останется и следа. Все очень просто — ждете, когда штукатурка засохнет (часа три) и мелкой шкуркой с легким нажимом проходитесь по краям рисунка. Все,»ресничек» как не бывало и рисунок выглядит идеально!

Источник

Трафареты для стен


Использование трафарета для стен в интерьере представляет собой модную тенденцию в декоре комнат. Декорировать можно не только стены , но и прочие предметы в интерьере.

Если мебель или стена имеет дефект, то с проблемой незаменимо может справиться трафарет. Рисунками позволяют декорировать однотонную стену и обои с рисунками. Покупатель может по своему усмотрению остановить выбор как на одноцветном, так и на разноцветном варианте изделия.

Трафареты бывают нескольких видов:


  • простой, имеющий один цвет;
  • комбинированный — сочетающий в себе несколько различные трафаретов с разными оттенками, создающими сложную комбинацию;
  • объемный трафарет, изготовленный с применением шпаклевки;
  • «обратный» или «антитрафарет», при котором распыление краски происходит вокруг закрытой площади стен. Такое изображение способно создать эффект свечения.
    Декорирование стены можно делать самостоятельно
    . Весь процесс работы займет несколько минут или около часа, если композиция будет сложной.

     

    Где можно купить трафарет и что с ним делать

    Готовый трафарет для стены можно приобрести в любом крупном магазине, который занимается продажей строительных материалов. Заказ можно сделать через интернет-магазины. Второй способ является более удобным, поскольку при желании заказчик может выбрать трафарет, по подобранному изображению.

    Услуги по вырезанию трафаретов оказывают любые рекламные фирмы. На сегодняшний день наибольшую популярность обрели черные ажурные элементы. Также можно подобрать решение, которое способно объединить всю цветовую гамму в комнате.

    Трафареты для стен вырезают из прочной и тонкой виниловой пленки, которая может быть прозрачной или цветной. Есть изделие объемное, то производители используют полихлорвинил.

    Для трафаретов в продаже имеется специальный аэрозольный клей. С его помощью можно прикрепить пленку к стене. Для окраски изделия лучше всего подойдет строительная или художественная акриловая основа. Акрил способен быстро высыхать, и обладает высокой стойкостью к воздействию различных факторов. Для новичков в этом деле лучше всего применить спрей, который способен создать ровное покрытие.

    Бюджетным вариантом является поролоновая губка. С ее помощью можно тонировать изображение, что создаст необычный эффект.

    Трафарет может быть размещен практически в любом месте. Наиболее оригинально такое дизайнерское решение смотрится над кроватью, возле двери или окна.

Обратите внимание!

Трафареты для декоративной штукатурки

Трафареты, вырезаемые из пластика, прекрасно подходят для работ по художественному оформлению стен, потолков, позволяют создавать объемные рисунки на металле, стекле, камне и изменять привычный облик многих вещей.

Декор стен в помещениях

Трафареты для декоративной штукатурки изготавливаются из пластика и обладают определенной жесткостью, что упрощает использование мастик, штукатурок и других вязких и густых материалов. Трафареты из пластика позволяют наносить на стены и потолки разнообразные объемные рисунки и создавать целые композиции.

Для качественного закрепления к поверхности трафаретов для декоративной штукатурки применяется специальный клей, выпускаемый многими компаниями. Для удобства использования он упаковывается в металлические баллончики и наносится методом распыления. Твердые трафареты рассчитаны на многократное применение, а специальный клей обеспечивает не только их надежную фиксацию, но и не оставляет следов на поверхностях.

Дизайнеры используют различные техники нанесения декоративных штукатурок или других густых составов на стены. Например, поверхность может быть предварительно окрашена водоэмульсионными красками и загрунтована. После высыхания этого слоя на стене закрепляется трафарет, на который с помощью шпателя наносится белая или цветная декоративная штукатурка. После завершения данной стадии работ, трафарет снимается и при необходимости приклеивается на другом участке стены, где вновь создается объемный рисунок с помощью штукатурки. При желании, после высыхания мастики, изображение может быть покрыто другими декоративными составами.

Трафареты для штукатурки

Для придания изысканных и современных декоров на фасаде сооружения используются декоративные трафареты из пластика. Современные мастера могут воплотить в жизнь любые идеи и дизайнерские задумки с помощью трафарета — декорирование поверхности камина, декорирование стены, обрамление зеркал или даже украшение дымохода. Объемные объекты могут покрываться красками либо же выполняться на сразу подготовленном и прокрашенном участке.

На темные декоративные поверхности, дабы привлечь внимание к объемному узору или рисунку, наносят штукатурку светлого оттенка. Экстравагантно и изыскано смотрится и обратное нанесение красок на поверхность, то есть на светлую структуру — штукатурку темного цвета. А также привлечь внимание к узору можно, используя технику нанесения на него дополнительных слоев лака или краски. Именно с помощью декоративных лаков можно создать эффект старины, преломление естественного цвета или покрытие, напоминающее мрамор.

Декоративные трафареты применяют не только для жилых зданий, но и для коммерческих помещений. Компания P-plotter готова дать подробную информацию по применению трафаретов для штукатурки и их сочетанию с другими декоративными поверхностями.

Заказать изготовление трафарета для декоративной штукатурки:

+7 (495) 104-60-54 или [email protected]

 

Примеры изготовленных трафаретов

Трафарет кожи объёмный, многразовый , пластиковый трафарет: цена в Кривом Роге. Трафареты для декорирования от «Мир Декора, делает Вашу жизнь приятной и уютной»

Уважаемые покупатели! Вы можете присылать нам свои эскизы трафаретов и если мы выберем Ваш эскиз для производства — Вы получите трафарет со своего эскиза абсолютно бесплатно.

Многоразовый трафарет для покраски и создания объемных элементов на стене.
Гибкость пластика позволяет осуществлять нанесения краски на изогнутые поверхности.
С помощью наших трафаретов можно создавать рисунки как объемные так и крашенные на любой поверхности.
Применяются как для покраски, так и для создание объемных элементов
Не разъедается растворителями. Легко чистится любыми растворителями.
Толщина пластика составляет 1000 микрон — 1 мм, что позволяет быть трафарету гибким и одновременно прочным.
 

 

Почему трафарет большой толщины — это неправильно.
 

Причина №1

Толщина узора всем нужна разная. Делать в каждом случае трафарет из материала разной толщины — значит многократно увеличивать его стоимость. Настоящий трафарет для штукатурки позволяет сделать узор любой высоты, гораздо больше собственной толщины.

 
Причина №2

Допустим, мы сделали для Вас трафарет толщиной 2 или 3 мм. Если он будет из мягкой пленки, то после нескольких повторов она растянется и станет непригодной. Если из жесткой — его невозможно будет транспортировать (скатать в трубку). Трафарет под шпаклевку стандартной толщины, который предлагаем мы, и не растянется со временем и отлично убирается в тубус.

 
Причина №3

Трафарет большой толщины невозможно использовать под покраску, тогда как наши объемные трафареты универсальные — и под штукатурку, и под покраску.

Кстати, этим успешно пользуются заказчики, которым нужно нанести рисунок ОЧЕНЬ много раз.

 
Причина №4

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

Причина №5

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

 

Под заказ изготавливаются любые изображения в любых размерах. Присылайте свои рисунки нам на почту [email protected] или Viber 0972371948
Заказы по индивидуальным изображениям принимаются по предоплате.

 

Галерея готовых трафаретов

Для лучшей фиксации пластиковых трафаретов на горизонтальной поверхности можно использовать клей-спрей для временной фиксации найти его можно перейдя по ссылке здесь.

Также у нас Вы можете приобрести пленочные, одноразовые, самоклеящиеся трафареты для покраски:

Перейти к трафаретам

Панно в восточном стиле своими руками

Мастер-класс по декорированию с помощью акриловых, объемных красок, гелей, 3D трафаретов .

Сегодня модно оформлять фотографии в объемных тематических панно.

Мы покажем, как с помощью объемного трафарета,  акриловых и объемных красок серии Deco 3D, гелей Deco 3D, аксессуаров можно создать своими руками оригинальное панно в восточном стиле.

Для работы понадобится:

  • Трафарет Deco 3D «Восточная коллекция»
  • Краски Deco Acrylic Cream
  • Многофункциональный клей-гель Deco
  • Медиум-гель Deco 3D Matt
  • Краски объемные Deco 3D
  • Нож пластиковый Deco 3D
  • Холсты объемные 
  • Кисти
  • Палитра пластиковая
  • Трафарет обычный
  • Декор-элементы
  • Скотч малярный
  • Бамбуковые палочки

1. Подготовка основы для панно. Покрываем холсты акриловыми красками.

 

 

 

 

 

 

 

 

2. Создание объемных изображений на холстах.

Берем объемный трафарет «Восточная коллекция». Обклеиваем необходимый элемент объемного трафарета малярным скотчем, во избежание попадания краски на другие элементы, а также для фиксирования трафарета на холсте.

Наносим объемную краску черного цвета на трафарет, с помощью пластикового ножа заполняем пространство рисунка, выравниваем, снимаем лишнюю краску. Затем аккуратно снимаем трафарет с холста, в результате остается аккуратное объемное изображение.

 

 

 

 

 

 

Выбираем другой элемент из этого же трафарета. Заполняем объемной краской, получаем новый красивый фактурный цветок.

   

 

 

 

 

 

 

Благодаря объемному Медиум-гелю Deco 3D Matt, мы имеем возможность создавать объемную краску из любой краски Deco Cream

. Разбавляем акриловую краску гелем, получаем необходимый яркий оттенок объемной краски, с помощью которой создаем объемный иероглиф для панно.

 

 

 

 

 

 

 

 

 

 

 

 

3. Создание рисунков на маленьких холстиках.

Фиксируем с помощью скотча трафарет на холстике. При помощи круглой кисти наносим выбранный цвет краски на трафарет, получаем рисунок с ровными краями. Красный холстик просто раскрашиваем краской  по заранее нарисованному эскизу.

 

 

 

 

 

 

4.Крепление маленьких холстиков и оформление панно.

С помощью многофункционального клей-геля Deco 3D надежно приклеиваем объемные холстики к основным холстам.

Клей-гель Deco 3D 3 в 1 имеет множество возможностей — для надежного приклеивания любых элементов декора на любых поверхностях. Для создания текстурных объемных  элементов, клей-гель можно смешивать с любым материалом: мраморная крошка, бумага, кристаллы соли, деревянные опилки, камушки, гранулы декоративные для получения объемного материала. Для превращения текстиля в твердую декоративную ткань нужно окунуть ткань в клей-гель, удалить излишки, оставьте на просушку- текстиль для декора готова.

В завершение приклеиваем фотографию, декор-элементы, оформляем панно бамбуковыми палочками.  Оригинальное объемное панно готово! 

 

 

Объемный трафарет — О строительстве и реммоте, немного о кровле

Трафареты-карски, краски-трафареты. Красиво, комфортно, увлекательно. Но – привычно как-то.

Мы вас решили познакомить с еще одной техникой.

Весьма актуальной и весьма простой. Не смотря на то, что те, кто видел результаты – поразмыслят, что эта работа требует недюжих талантов мастера. Но – вовсе нет, смотрите!

Техника эта именуется «объемный трафарет». В следствии мы приобретаем рисунок не краской, а рельефом. Выпуклые узоры рисуются трафаретом кроме того несложнее, чем краской.

Для работы нам потребуется трафарет, сделанный из особой (не таковой, как в большинстве случаев!) пленки, аэрозольный клей. И… простая штукатурка, которую мы будем применять вместо краски. Это возможно и дорогая венецианская штукатурка, и недорогая отечественного производства.

Вовсе необязательно пользоваться кроме того декоративной штукатуркой.

Основное – дабы она была достаточно качественной, нужной консистенции – как мягкое мороженное либо густая сметана. Не смотря на то, что сказать об этом излишне – практически все штукатурки как раз такие. Цвет и фактуру – выбирайте по вкусу.

Для объемного рисунка трафаретом вместо кистей мы будем применять простые шпатели, плоские узкие лопаточки – какими постоянно работают со штукатуркой. Эти шпатели стоят три копейки в любом хозяйственном. Шпателя берем два – как специалисты ремонта мы не будем ходить любой раз к ведру со штукатуркой, а будем пользоваться вторым шпателем как палитрой.

Все так легко, что мастера нас побьют за разглашение производственных тайн. Но все же – мы рискнем Вам на благо. Начинаем.

Поле деятельности – крашенная стенки. Но объемный рисунок трафаретом возможно сделать где угодно – кроме того на потолке. Шпаклевка густая, и не будет капать вниз.

  • Ход 1. Наносим аэрозольный клей на оборотную сторону трафарета. При объемного трафарета аэрозольный клей весьма и весьма настоятельно рекомендуем. Техника нанесения выпуклых картинок такова, что трафарет обязан не только прекрасно держаться на стене, но и легко от нее отделяться!
  • Ход 2. Прикладываем трафарет к стенке. По окончании чего отходим на несколько шагов и оцениваем положение трафарета — все ли как хотелось.
  • Ход 3. Тихо и с уверенностью, ровным слоем, шпателем замазываем трафарет штукатуркой. Не торопимся, потому что все равно это скоро. Значительно стремительнее, чем краской – как маслом бутерброд намазать.
  • Ход 4. Сразу после того, как положили шпатель в сторону, трафарет со стенки снимаем. Уверенным и энергичным перемещением, с одного угла отделяем от стенки.

Прошла 60 секунд (!!!) и объемный рисунок на стене готов! Остается лишь отмыть трафарет (лучше наряду с этим направляться отечественной же инструкции) до тех пор пока штукатурка на нем не застыла. Не смотря на то, что — возможно и не мыть, она не пахнет.

Объемный рисунок на стене трафаретом возможно каким угодно — узором, картиной, бордюром, обоями. Одинаковый трафарет возможно нанести по-различному. Мы только что продемонстрировали несложный метод.

Но, пара лишних перемещений — и рисунок может смотреться совсем по-второму!

В случае если хочется большего количества.

То нет ничего несложнее. Самое очевидное ответ — имеется верный подход. Легко кладем больше штукатурки и все.

Толстым-толстым слоем!

В случае если нужна текстура на рисунке.

И это совсем не сложно. Декоративная штукатурка сохнет часа три, имеется большое количество времени ,дабы, вооружившись твёрдой малярной кисточкой (к примеру) оставить на поверхности штукатурки текстуру. К примеру — так возможно нарисовать крылья.

Обратите внимание: сняв трафарет, вы заметите на краях рельефного рисунка вытянутые реснички (они же в простонародье — сопли) из штукатурки. Не переживайте — это совсем обычное явление. Кроме того если они огромные (что в обязательном порядке будет если Вы желаете рисунок громадной толщины), от них не останется и следа.

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

Все, ресничек как не бывало и рисунок выглядит идеально!

Маленький совет для тех, кто желает сделать бордюр выпуклым рисунком:

Штукатурка сохнет продолжительно, исходя из этого рисовать бордюр как в большинстве случаев — прикладывая повтор за повтором — не окажется. Правильнее окажется, но со скоростью долгостроя. Исходя из этого луше сделать так, как продемонстрировано на картине.

Сперва размечаем положение повторов по всей стенке (метки указаны зелеными стрелками. После этого рисуем повторы ЧЕРЕЗ ОДИН. Завершив целый бордюр, возвращаемся к началу и рисуем четные повторы.

Все! Скорость не упадет, уровень качества не пострадает.

Рисуйте и наслаждайтесь результатом! Вы на данный момент, возможно, и не верите, но все так легко и легко — что НИКОМУ ОБ ЭТОМ НЕ Рассказываете! Показывайте приятелям и привычным в сопровождении сказки о нелегком многодневном труде декратора.

Статья предоставлена веб-магазином художественных трафаретов TRAFARET.NET

Рандомные показатели записей:

Sweet Bloom | Объемный дизайн | Cлайдеры-трафареты для свит блюма NailArt Elite-Style


Подборка наиболее релевантных статей:
  • Как клеить обои и обойные бордюры

    Как выбрать обои инструменты и Материалы Пошаговое наклеивание обоев Подготовка стен для наклеивания Процесс наклеивания обоев Небольшой ремонт обоев…

  • Краски «crown» для внутренних работ

    Бессмысленно, на мой взор, спорить, что лучше: красить стенки либо клеить на них обои? В действительности, покраска стен вовсе не альтернатива оклейке…

  • Краски для внутренних работ: интерьерные краски «crown» (краун)

    Бессмысленно, на мой взор, спорить, что лучше: красить стенки либо клеить на них обои? В действительности, покраска стен вовсе не альтернатива оклейке…

  • Альтернатива обоям — штукатурка, краска, панели, камень

    Штукатурка Краска Панель Моложе, чем думается Настоящий камень, лишь небольшой Что вы понимаете о ремонте? Перестелить полы, побелить потолки — это само…

[ TRAFORO.

RU ]    КОНКУРС трафаретов 4 «ОБЪЁМНЫЙ ТРАФАРЕТ» нужен всем!
 
НОВОСТИ КОНКУРСА: 10.04.09 Выложена полная статистика конкурса (участники, кол-во присланных работ, кол-во работ прошедших отборочный тур, финалисты, победители, география участников).
   
19.03.09
Журнал о графическом дизайне [KAK) опубликовал на своём сайте информацию об итогах конкурса.

05.03.09
Победители конкурса написали о себе, о своей работе и о конкурсе трафаретов 4.
   
28.02.09
Автор серии книг «OBJECTS» высказал своё мнение относительно работ, присланных на конкурс трафаретов 4.
   
23.02.09
Выложены работы участников и объявлены победители.
  
26.01.09
Приём работ на конкурс трафарета 4  — завершён. Спасибо всем участникам. В ближайшее время будут выложены работы и объявлены победители.
  
28.12.08
Выложены примеры работ подходящих для конкурса.
  
06.12.08
К списку партнёров присоединился единый граффити портал CANS.RU
Также можно обсудить конкурс на форуме портала.
  
03.12.08
Журнал о графическом дизайне [KAK) опубликовал на своём сайте статью о конкурсе.
  

01.12.08
К списку партнёров присоединился fashion magazine 9LINESMAG.
  
27.11.08
К списку партнёров присоединился портал GRAFFITI ART.
  

25.11.08 Конкурс стартовал!
 

  ОРГАНИЗАТОРЫ:

    ТРАФАРЕТ НУЖЕН ВСЕМ
Сайт о трафаретах.
www.traforo.ru
    
    OBJECTS BOOK
Книга о граффити и уличном искусстве в России и СНГ.
www.objectsbook.ru

  ИНФОРМАЦИОННЫЕ ПАРТНЁРЫ:

 
 
 
 
  gif»>  
   
   
 
 
 
 
Интернет проект ТРАФАРЕТ нужен всем совместно с OBJECTS book проводят конкурс трафаретов 4 «ОБЪЁМНЫЙ ТРАФАРЕТ».

Конкурс проводится в поддержку выхода третьей книги об уличном искусстве в России

OBJECTS 3: трехмерные объекты и объемно-пространственные композиции в уличной среде.
А так же популяризации трафаретного искусства (Stencil Art) и развития уличного искусства (Street Art) в целом.
 

КОНКУРС:
 
Положение:
  
В конкурсе могут принять участие все желающие.
Все работы будут размещены на сайте www.traforo.ru
Работы принимаются с 25 ноября 2008 по 25 января 2009.
 
Условия конкурса:
  
Создать трафарет на свободную тему (предметы, объёмные надписи, персонажи, портреты, архитектура, пейзаж и т.д.), но c максимальным достижением объёмного изображения.
Отпечатать трафарет на улице с помощью любых материалов, сфотографировать и прислать изображение организаторам конкурса по адресу: e-mail: traforo@mail. ru
 
Призы:
  
1 место Три книги: «OBJECTS 1»,  «OBJECTS 2», «OBJECTS 3».
2 место Две книги: «OBJECTS 2», «OBJECTS 3».
3 место Одна книга: «OBJECTS 3».
 
Требование к работам:
  
1. Количество подаваемых работ от одного участника или группы участников неограниченно.
2. Размер трафарета должен быть не менее 21×29 см
    (формат А4).
3. Трафарет должен быть отпечатан в уличной среде.
4. К работе прилагается текстовый файл с информацией:
  имя или ник
  название работы
  размеры трафарета
  место нанесения трафарета
5. Работы без текстового файла рассматриваться не будут.
    (скачать форму для заполнения).
6. Работы, поступившие на конкурс после 25 января 2009 года, к рассмотрению не принимаются.
 
Оценка работ будет проходить по трём критериям:
  
1. Достижение максимального объёма изображения с помощью трафарета.
2. Смысловая нагрузка работы.
3. Сложность исполнения трафарета (размер, количество вырезанных элементов, количество слоёв).
 
Жюри:
  
Жюри конкурса состоит из профессиональных художников, дизайнеров и авторитетных деятелей уличного искусства.
 

Дополнительно:
  
Примеры работ подходящих для конкурса.
     
Скачать афишу конкурса.
     
На сайте «В КОНТАКТЕ» проходят обсуждения конкурса.
 
Прошедшие конкурсы:
конкурс «Выборы президента?»
конкурс «Трафарет 2»
конкурс «Трафарет 1»
 

Все вопросы связанные с конкурсом
«ОБЪЁМНЫЙ ТРАФАРЕТ» направляйте на: traforo@mail. ru

[ ИТОГИ  КОНКУРСА ]

 
КНИГИ:
 
  OBJECTS 1
2005 год.
Интернет проект Visual Artifacts представил первое печатное издание о стрит арт культуре «Objects Book».
На тот момент «Objects Book» представляла собой иллюстрированный каталог работ художников стрит арта и граффити.
В дальнейшем, планировался выпуск периодического издания, которое будет содержать не только работы художников, но и интервью, репортажи, тезисы, совместные проекты.
В книге представлено свыше 200 иллюстраций.
  
Формат: 210 х 148 мм.
Объем: 64 стр.
Тираж: 1000
 
 
  OBJECTS 2
2006 год.
Книга о граффити и уличном искусстве в СССР.
Граффити постоянно видоизменяется. Непрерывная дифференциация влечет за собой отказ от традиционных, ставших уже классикой художественных форм самовыражения и началу поиска новых.
Использование стилистических элементов пластического языка граффити становится все более популярным приемом в дизайне, рекламе и брендинге, а уличными художниками, как потенциальными художниками актуального искусства и как носителями малоизученных в России субкультурных практик, все чаще заинтересовываются галеристы.
Используя новые медийные средства, художники заполняют своими работами уличное пространство, создавая тем самым своеобразные галереи под открытым небом.
Книга OBJECTS 2, предоставляет уникальную возможность ознакомиться с формами уличного искусства, в которые трансформировалось современное граффити, а так же проследить некоторые моменты в истории бытования данной культуры в России.
Книга представляет собой полноцветное печатное издание объемом в 108 страниц и нестандартным квадратным форматом (220х220 мм.)
Весь фотоматериал, представленный в издании сопровождается пояснительным текстом на двух языках: русском и английском.
  
Формат: 220 x 220 мм.
Объем: 108 стр.
Тираж: 2000
 
 
  OBJECTS 3
2008 год.
Russian street art.
Цель серии книг Objects это стимуляция творческого эксперимента в рядах отечественных уличных художников и призыв выйти за рамки двухмерного и типографического стрит-арта.
В фокусе третьего номера оказываются непосредственно трехмерные объекты, а так же объемно-пространственные композиции, создаваемые различными художниками на улицах города. Как и в прошлый раз, содержание номера будет посвящено обзору инноваций в области российского уличного искусства и связанных с этим событий.
Большая часть опубликованных проектов создана специально для номера, поскольку для большинства представленных в нем художников объем довольно новое поле для эксперимента. Однако если для одних это дебют, то для других вполне привычная практика. Это обусловлено тем, что сегодня на городских улицах России орудуют художники, вышедшие не только из граффити сообщества, но и из других сфер это дизайнеры, иллюстраторы, традиционно галерейные художники современного искусства и т.п. Об их вариантах организации городского пространства на этот раз и рассказывает Objects3.
  
Формат 220 x 210 мм.  
Объем: 120 стр.
Тираж: 2000
 
 

Теория трафаретных теневых объемов — Графика и программирование графического процессора — Учебные пособия

[size=»5″]Introduction

Раньше тени представляли собой просто участки затемненной текстуры, обычно круглой формы, которые проецировались на пол под персонажами или объектами в игре. Нужно быть плохо осведомленным или наивным, чтобы думать, что нам все еще могут сойти с рук подобные небрежные «хаки» в будущих 3D-играх. Было время, когда тени были слишком дорогими, чтобы их можно было правильно отобразить в режиме реального времени, но с постоянно растущей мощностью графического оборудования неспособность обеспечить правильные тени больше не означала посредственных реализаций, это граничит с преступлением. недостаточное использование доступного графического оборудования.

Существует множество различных методов и подходов к реализации теней, поэтому найти «лучшее» решение сложно. Чтобы понять все подходы и оценить их различия, сильные и слабые стороны, я настоятельно рекомендую прочитать все и вся о создании теней в 3D. Мы не должны ограничиваться только изучением техники теневого объема; любая техника затенения заслуживает внимания. Глава 6 книги [13] содержит замечательное высокоуровневое обсуждение большинства известных методов затенения.Чтобы ограничить объем этой статьи, мы обсудим только теорию и вопросы реализации трафаретных теневых томов, уделяя особое внимание использованию Microsoft Direct3D API. Также было бы хорошо понять, что объем тени трафарета просто не является методом затенения «конец всего». Обсуждение сильных сторон различных методов затенения можно найти в [4] со ссылкой на настройки игры. Совсем недавно Эрик Ленгьел [11] также представил очень полную статью о реализации теневых томов в OpenGL на веб-сайте Gamasutra [17]. Математические выводы статьи Ленгьела можно найти в [12]. Несколько лет назад существовал знаменитый текстовый файл «Carmack On Shadow Volumes» [6], который представляет собой не что иное, как электронное письмо от Джона Кармака из id Software Марку Килгарду из Nvidia о создании теневого тома с ошибкой глубины. выполнение. Интересно отметить, что Кармак независимо открыл метод отказа по глубине, в то время как Билл Билодо и Майк Сонги [7] также представили аналогичный подход к теневым объемам.Следовательно, метод отказа по глубине теперь широко известен как «обратный метод Кармака».

[size=»5″]Stencil Shadow Volume Concept

Фрэнк Кроу [8] впервые представил идею использования теневых объемов для отбрасывания теней в 1977 году. Тим Хейдманн [5] из Silicon Graphics реализовал теневой объем Кроу, хитро используя буфер трафарета для подсчета теневого объема в IRIX GL. Давайте посмотрим, как работает оригинальная техника трафаретной тени.


Рисунок 1: Окклюдер и теневой объем


По общему соглашению, любые объекты в сцене, которые отбрасывают тени, называются окклюдерами. Как показано на рис. 1 выше, у нас есть упрощенное 2D-представление (сверху вниз) сцены со сферой в качестве окклюдера. Прямоугольник справа от сферы — теневой приемник. Для простоты мы не учитываем теневой объем, создаваемый прямоугольником. Заштрихованная область представляет теневой объем в 2D, созданный окклюдером. Объем тени является результатом выдавливания краев силуэта из точки зрения источника света на конечное или бесконечное расстояние.


Рисунок 2: Силуэт окклюдеров


На рис. 2 показан вероятный силуэт сферы, созданный с точки зрения источника света.Силуэт просто состоит из ребер, каждое из которых состоит из двух вершин. Затем эти края выдавливаются в направлении, показанном пунктирными стрелками, исходящими от источника света. Выдавливая края силуэта, мы эффективно создаем теневой объем. Следует отметить, что на данном этапе экструзия объема тени различается для разных источников света. Для точечных источников света края силуэта выдавливаются точно точка за точкой. Для бесконечных направленных источников света края силуэта выдавливаются в одну точку.Мы углубимся в детали определения краев силуэта и создания теневых объемов позже. Величина выдавливания может быть как конечной, так и бесконечной. Таким образом, реализации, которые выдавливают края силуэта в бесконечность, широко известны как Infinite Shadow Volumes.


Рис. 3: Работа трафарета Depth-Pass


На рис. 3 показаны многочисленные возможные направления взгляда игрока в сцене. Числа на концах стрелок — это значения, оставшиеся в буфере трафарета после рендеринга теневого объема.Фрагменты с ненулевыми значениями трафарета считаются находящимися в тени. Генерация значений в буфере трафарета является результатом следующих операций с трафаретом:
  1. Рендеринг передней грани теневого объема. Если тест глубины пройден, увеличивается значение трафарета, в противном случае ничего не происходит. Отключите отрисовку в кадре и буфере глубины.
  2. Рендеринг задней грани теневого объема. Если тест глубины проходит успешно, значение трафарета уменьшается, в противном случае ничего не происходит. Отключите отрисовку в кадре и буфере глубины.
Приведенный выше алгоритм также известен как техника объемной тени трафарета Depth-Pass, поскольку мы манипулируем значениями трафарета только после прохождения теста глубины.Глубинный проход также широко известен как z-проход.

Давайте предположим, что мы уже отрендерили объекты в буфер кадра до выполнения описанных выше операций трафарета. Это означает, что буфер глубины должен быть установлен с правильными значениями для тестирования глубины или z-тестирования, если хотите. Второй крайний левый луч, исходящий из позиции глаза, не попадает ни в какую часть теневого объема (выделено серым цветом), поэтому результирующие значения трафарета равны 0, что означает, что фрагмент, представленный этими двумя лучами, не находится в тени.Теперь давайте проследим 3[sup]rd[/sup] луч слева. Когда мы визуализируем переднюю поверхность теневого объема, тест глубины будет пройден, а значение трафарета будет увеличено до 1. Когда мы визуализируем заднюю поверхность теневого объема, тест глубины завершится ошибкой, поскольку задняя грань теневого объема находится за окклюдером. Таким образом, значение шаблона для фрагмента, представленного этим лучом, остается равным 1. Это означает, что фрагмент находится в тени, поскольку его значение шаблона не равно нулю.

Работает ли подсчет теневых томов для нескольких теневых томов? Да.


Рисунок 4. Подсчет нескольких теневых томов


На рис. 4 выше показано, что подсчет с использованием буфера трафарета будет работать даже для нескольких пересекающихся теневых томов.

[size=»5″]Конечный объем против бесконечного объема

Вернувшись к рисунку 1, вы могли видеть, что теневой объем должен вытягиваться до бесконечности. На самом деле это не строгое требование. Мы отправляем объем тени в бесконечность, чтобы избежать неловкой ситуации, когда источник света находится очень близко к окклюдеру.


Рис. 5. Конечный теневой объем не может затенить другие объекты


Если источник света находится близко к объекту A, конечного объема тени может быть недостаточно, чтобы достичь объекта B. Луч от глаза к объекту B будет иметь значение трафарета фрагмента, равное 0, хотя на самом деле оно должно было быть ненулевым! Бесконечный теневой объем гарантирует, что независимо от того, насколько близко объект находится к окклюдеру, результирующий теневой объем покроет все объекты в сцене. Вскоре мы обсудим, как вытягивать вершины в бесконечность.

[size=»5″]Реверс Кармака

Почему Джон Кармак, Билл Билодо и Майк Сонги даже удосужились ломать голову над тем, чтобы придумать альтернативный алгоритм трафарета, если техника прохода по глубине, кажется, прекрасно работает? Проход глубины действительно работает хорошо, по крайней мере, большую часть времени. Но когда точка глаза входит в теневой объем, начинается ад.


Рис. 6. Когда точка глаза находится в пределах теневого объема, операция трафарета глубины не выполняется


Как показано на Рисунке 6 выше, техника прохода глубины полностью терпит неудачу, когда точка глаза находится в пределах теневого объема. Это означало, что мы не могли допустить, чтобы этот большой плохой рогатый жнец подкрадывался к вам сзади, поглотив вас в сгущающейся тьме своих теней. Джон Кармак никогда бы так не поступил! Ниже приведен алгоритм отказа глубины (также известный как обратный алгоритм Кармака):
  1. Визуализировать заднюю поверхность теневого объема. Если проверка глубины не пройдена, увеличивается значение трафарета, иначе ничего не делается. Отключите отрисовку в кадре и буфере глубины.
  2. Рендеринг передней грани теневого объема. Если проверка глубины не удалась, значение трафарета уменьшается, иначе ничего не делается.Отключите отрисовку в кадре и буфере глубины.


Рис. 7. Ошибка глубины работает, даже если точка обзора находится в тени


Сбой по глубине также обычно называют z-сбой. На рис. 7 показана работа техники отказа глубины, даже когда точка глаза находится в тени. Если вы думаете о сценарии, в котором положение глаза находится за пределами теневого объема, техника провала глубины также должна работать. Но на самом деле в некоторых случаях это не удается. Мы скоро обсудим эти сценарии; просто помните пока, что и техники прохождения глубины, и техники отказа глубины не идеальны.На самом деле нам потребуется комбинация различных методов, чтобы найти надежное решение для теневых томов. В [11] и [10] содержится очень хорошее обсуждение робастных трафаретных теневых объемных решений.

[size=»5″]Capping For Depth-Fail

Чтобы поместить ненулевые значения в буфер трафарета, метод сбоя глубины зависит от невозможности рендеринга задних граней теневого объема по отношению к положению глаза. Это означало, что теневой том должен быть закрытым; теневой объем должен быть ограничен как спереди, так и сзади (даже если задний конец находится в бесконечности).Без ограничения метод отказа по глубине дал бы ошибочные результаты. Как бы удивительно это ни звучало, но да, вы можете ограничивать громкость теней даже на бесконечности.


Рисунок 8: Ограничение теневого тома


Как показано на рис. 8, передняя и задняя крышки (жирные линии) создают закрытый теневой объем. И передняя, ​​и задняя крышки считаются задней стороной с двух позиций для глаз. При трафаретных операциях с ошибкой глубины ограничение создаст правильные ненулевые значения трафарета.Есть несколько способов создания передней и задней крышки. Марк Килгард [2] описал нетривиальный метод создания передней крышки. Этот метод в основном включает проекцию геометрии окклюдера, обращенной назад, на ближнюю плоскость отсечения и использует эти геометрии в качестве передней крышки. В качестве альтернативы мы можем построить переднюю крышку, повторно используя передние треугольники по отношению к источнику света. Геометрии, использованные в передней крышке, затем можно выдавить в обратном порядке для создания задней крышки.Обратный порядок заключается в том, чтобы убедиться, что задняя крышка обращена наружу от теневого объема. На самом деле, мы всегда должны следить за тем, чтобы примитивы, в нашем случае треугольники, определяющие весь теневой объем, были направлены наружу, как показано на рисунке 9. Следует отметить, что рендеринг закрытых теневых объемов несколько дороже, чем использование глубины без прохода. Ограничение теневого объема. Помимо большего количества примитивов для теневого тома, дополнительные вычислительные ресурсы также необходимы для вычисления переднего и заднего ограничения.Вскоре мы рассмотрим детали ограничения теневых томов.


Рисунок 9: Теневой объем должен быть обращен наружу

[size=»5″]Собираем вместе

Давайте сопоставим то, что мы узнали, и попытаемся придумать все необходимые шаги для создания трафаретных теневых объемов, прежде чем мы приступим к ним. все недостатки рассмотренных методов. Общий список шагов для реализации трафаретных теней:

  1. Рендеринг всех объектов с использованием только окружающего освещения и любого другого атрибута затенения поверхности.Рендеринг не должен зависеть от какого-либо конкретного источника света. Убедитесь, что буфер глубины записан.
  2. Начиная с источника света, очистите буфер трафарета и рассчитайте силуэт всех окклюдеров относительно источника света.
  3. Вытяните силуэт от источника света на конечное или бесконечное расстояние, чтобы сформировать теневые объемы и сгенерировать заглушку, если использовалась техника отказа глубины. (Выдавливание бесконечного теневого объема на самом деле не является обязательным)
  4. Рендеринг теневых объемов с использованием выбранной техники.Проход по глубине или провал по глубине.
  5. Используя обновленный буфер трафарета, выполните проход освещения, чтобы затенить (сделать его на тон темнее) фрагменты, соответствующие ненулевым значениям трафарета.
  6. Повторите шаги со 2 по 5 для всех источников света в сцене.
Из приведенного выше списка шагов должно быть совершенно очевидно, что большее количество источников света означает большее количество проходов, что может сильно ударить по карману частоты кадров. На самом деле, мы должны быть очень избирательны, решая, какие источники света следует использовать для отбрасывания теней.В статье [4] есть хорошее обсуждение выбора источников света, отбрасывающих тень, в сцене, освещенной несколькими источниками света. Представьте, что ваш игровой персонаж стоит посреди стадиона с четырьмя гигантскими батареями прожекторов, освещающих поле. На полу должно быть не менее 4 теней вашего игрового персонажа, образующих крест за счет отбрасывания теней с 4 разных направлений. Если выбрать здесь только 1 источник света, сцена будет выглядеть странно. Наличие нескольких источников света позволяет получить приятные реалистичные мягкие тени, но есть и другие способы сымитировать их, не прибегая к нескольким источникам света.Мягкая тень — это огромная тема, которая выходит за рамки этой статьи, так что давайте просто опустим ее. Эмпирическое правило: всегда выбирайте доминирующие источники света в сцене. Использование усеченной пирамиды обзора для выбора источников света может быть очень опасным, так как у вас может быть хороший гигантский 1000-мегаваттный фотонный прожектор прямо за макушкой вашей головы. Это не усеченная видимость, но она будет отвечать за наиболее четкие тени, которые вы увидите в сцене. Просто помните, чем меньше количество источников света, тем больше циклов и проходов рендеринга вы можете сэкономить для других визуально более важных эффектов. Так что выбирайте с осторожностью!

Судя по опубликованным снимкам экрана грядущего движка Doom3, я полагаю, что id Software придется ограничить количество источников света, отбрасывающих тень, в любой сцене максимум, скажем, 4 или 5. Что ж, мы узнаем, когда Doom3 появится на прилавках в следующий раз. год.

[size=»5″]Определение силуэта

Самым первым шагом в построении теневого объема является определение силуэта окклюдера. Алгоритм трафаретной тени требует, чтобы окклюдеры были закрытыми треугольными сетками.Это означало, что каждое ребро в модели должно быть общим только для двух треугольников, что запрещает любые отверстия, открывающие внутреннюю часть модели. Нас интересуют только ребра, общие для треугольника, обращенного к источнику света, и другого треугольника, обращенного от источника света. Существует множество способов вычисления краев силуэта, и каждый из этих методов потребляет большое количество циклов процессора. Предположим, мы работаем с индексированной треугольной сеткой.


Рис. 10. Исключение краев для определения силуэта


На рис. 10 показана одна сторона коробки, состоящей из четырех треугольников с последовательной обмоткой против часовой стрелки.Ломаные линии указывают на избыточные внутренние края, поскольку нас интересует только сплошная линия, формирующая контур коробки. Избыточные внутренние ребра индексируются дважды, так как они являются общими для двух треугольников. Мы воспользуемся этим свойством, чтобы придумать простой метод определения краев силуэта.
  1. Цикл по всем треугольникам модели
  2. Если треугольник обращен к источнику света (точечный продукт > 0)
  3. Вставить три ребра (пару вершин) в стек ребер
  4. Проверить наличие предыдущего появления каждого ребра или его реверс в стеке
  5. Если в стеке найдено ребро или его реверс, удалить оба ребра
  6. Начать с нового треугольника
Приведенный выше алгоритм гарантирует, что внутренние ребра в конечном итоге будут удалены из стека, поскольку они индексируются более одного треугольника.

Eric Lengyel [11] представил другой алгоритм определения силуэта, использующий последовательное скручивание (против часовой стрелки) вершин. Метод требует 2 проходов по всем треугольникам модели для фильтрации всех ребер, общих для пар треугольников. Результирующий список ребер затем подвергается операциям скалярного произведения, чтобы получить ребра, которые являются общими для треугольника, обращенного к свету, и треугольника, обращенного не к свету.

Важно отметить, что определение силуэта является одной из двух самых затратных операций в реализации трафаретного теневого объема.Другой — это передача рендеринга теневого объема для обновления буфера трафарета. Эти две области являются первыми кандидатами на агрессивную оптимизацию, которую мы подробно обсудим в заключительных разделах этой статьи.

[size=»5″]Создание ограничения теневого тома

Помните, что ограничение теневого объема необходимо только для техники отказа глубины. Цель ограничения теневого тома — убедиться, что наш теневой том закрыт, а он должен быть закрыт даже в бесконечности. Интересно, что экструзия геометрии для точечных источников света и бесконечных направленных источников света различна. Точечные источники света будут выдавливать края силуэта точно точка за точкой, в то время как бесконечные направленные источники света будут выдавливать все края силуэта в одну точку на бесконечности. Это означало бы, что задняя крышка теневого объема будет избыточной для бесконечных направленных источников света, поскольку она уже закрыта.

Идеальное время для создания передней и задней заглушек — это время создания силуэта, поскольку мы уже создаем углы между вектором света и краями.Для передней крышки нам просто нужно продублировать все геометрии лицевой стороны и использовать эти геометрии для экструзии, чтобы также сформировать заднюю крышку. Обратите внимание, что задняя крышка необходима только для точечных источников света.


Рис. 11: Объем закрытой тени с точечным источником света


На рис. 11 показаны два набора изображений, использующих различные геометрические формы для закрытия теневого объема. В первом ряду изображен закрытый теневой объем, образованный передней и задней крышками с повторным использованием геометрии, обращенной к свету.Во втором ряду показан закрытый теневой объем с передней крышкой, в которой повторно используется обращенная к свету геометрия окклюдера, и задняя крышка в форме треугольника, построенная из экструдированных краев силуэта. Следует использовать треугольный веер задней крышки, поскольку он приводит к меньшей геометрии и, следовательно, требует меньше памяти и времени рендеринга. При повторном использовании геометрии окклюдера, обращенной вперед, мы должны быть чрезвычайно осторожны в отношении рендеринга теневого объема, поскольку геометрия передней крышки теневого объема физически компланарна геометрии окклюдера, обращенной вперед.Чаще всего проблемы с точностью приводят к тому, что геометрия передней крышки теневого объема визуализируется перед геометрией лицевой стороны окклюдера, что приводит к тому, что весь окклюдер поглощается собственным теневым объемом. Мы можем использовать флаг [font=»Courier New»][color=»#000080″]D3DRS_ZBIAS[/color][/font] в [font=»Courier New»][color=»#000080″] Direct3D. D3DRENDERSTATETYPE[/color][/font], чтобы геометрия окклюдера, обращенная вперед, отображалась перед передней крышкой его теневого объема.Просто используйте флаг [font=»Courier New»][color=»#000080″]D3DRS_ZBIAS[/color][/font] при настройке состояния рендеринга (например, [font=»Courier New»][color=»#000080 «]pd3dDevice->SetRenderState(D3DRS_ZBIAS, значение)[/color][/font]). Мы устанавливаем значение флага на более высокое значение для геометрии окклюдера и более низкое значение для его теневого объема. Это гарантирует, что передняя часть теневого объема будет отображаться за фронтальной геометрией окклюдера.

[size=»5″]Вытягивание геометрии до бесконечности

Как обсуждалось ранее, нам нужно выдавить края силуэта до бесконечности, чтобы избежать ситуации, показанной на рис. 5, когда выдавливание конечного объема тени не может покрыть все приемники тени в место действия. Однако не обязательно экструдировать края силуэта до бесконечности, если мы можем гарантировать, что ситуация на рис. 5 никогда не повторится в нашей сцене. В практических случаях большого значения обычно более чем достаточно.

Марк Килгард [2] ввел прием использования значения w однородных координат для рендеринга полубесконечных вершин. В однородных 4D-координатах мы представляем точку или вектор как (x, y, z, w), где w является 4[sup]й[/sup] координатой. Для точек w равно 1.0. Для векторов w равно 0,0. Однородная запись чрезвычайно полезна для преобразования как точек, так и векторов. Поскольку перевод имеет смысл только для точек, а не для векторов, значение w играет важную роль в преобразовании только точек, а не вершин. Это можно легко вывести, поскольку значения перевода матрицы преобразования находятся либо в 4[sup]th[/sup] столбце, либо в 4[sup]й[/sup] строке, в зависимости от соглашения о матрице. Установив значение w вершин, связанных с бесконечностью, равным 0.0, мы меняем однородное представление с трехмерной точки на трехмерный вектор. Рендеринг вектора (w = 0,0) в пространстве отсечения был бы полубесконечным. Важно отметить, что мы должны устанавливать значения w равными 0.0 только после преобразования в пространство отсечения. В Direct3D это означало бы комбинированное преобразование матриц мира, вида и проекции. Это связано с тем, что когда мы устанавливаем гибкий формат вершины [font=»Courier New»][color=»#000080″]D3DFVF_XYZRHW[/color][/font], мы обходим конвейер преобразования и освещения Direct3D.Direct3D предполагает, что мы уже трансформировали и засветили вершины. В идеале выдавливание геометрии должно выполняться в вершинной программе, поскольку мы уже работаем в пространстве отсечения в вершинном шейдере. На самом деле, вершинные шейдеры и трафаретные теневые объемы — это союз, заключенный на небесах. Мы обсудим преимущества создания теневых объемов в вершинной программе в конце этой статьи.

Хотя выдавливание геометрии на огромное расстояние или в бесконечность помогает избежать проблемы покрытия конечного теневого объема, оно также порождает другую проблему. Представьте себе двух игроков в игре-шутере от первого лица (FPS) в подземелье, которые бродят по соседним комнатам, разделенным прочной кирпичной стеной. Настольная лампа в одной из комнат заставляет одного из игроков отбрасывать тень на кирпич, разделяющий комнаты. Игрок в другой комнате увидит тень, отбрасываемую настольной лампой, поскольку объем тени вытягивается в бесконечность. Сплошная кирпичная стена вдруг становится похожей на тонкий лист бумаги с «призрачной» тенью на нем. К счастью, мы можем избежать такой ситуации, в первую очередь, отбрасывая аватары игроков, отбрасывающих тень, используя методы окклюзии-выборки.На рис. 12 показана более неловкая ситуация, когда камера видит и окклюдер, и призрачную тень окклюдера на другой стороне местности. Этот сценарий вполне возможен, особенно для авиасимуляторов или воздушных боев. Единственное возможное решение, позволяющее избежать покрытия конечного объема тени (рис. 5) и призрачной тени (рис. 12), состоит в том, чтобы наложить ограничения на размещение источников света и окклюдеров в сцене. Если мы можем быть уверены, что окклюдер никогда не сможет приблизиться ближе, чем на определенное расстояние от источника света, отбрасывающего тень, то мы можем с уверенностью оценить наибольшее расстояние, на которое нам потребуется выдавить объем тени, чтобы обеспечить адекватное теневое покрытие, не вызывая ореолов. тени.


Рис. 12. Эффект призрачной тени из-за большого расстояния экструзии

[size=»5″]Просмотр усечения пирамиды видимости — Абсолютное зло

Пришло время противостоять величайшему злу в трафаретных теневых объемах: просмотр отсечения усеченной пирамиды. Отсечение является потенциальной проблемой для любого метода 3D-рендеринга, потому что мы полагаемся на перспективную проекцию наших 3D-миров. Усеченная видимость требует ближнего и дальнего расстояния отсечения для создания ближней и дальней плоскости отсечения.Оба метода — проход по глубине и провал по глубине — страдают от проблемы отсечения усеченной пирамиды обзора. Техника прохода по глубине страдает от ошибок, когда теневой объем обрезается после пересечения с ближней плоскостью отсечения, как показано на рисунке 13. Красная стрелка представляет один случай, когда значения трафарета для связанного фрагмента будут неправильными из-за отсечения теневого объема. лицевая сторона.


Рис. 13. Объем тени, обрезанный в ближней плоскости отсечения, вызывающий ошибки прохода глубины


С другой стороны, метод отказа по глубине страдает от ошибок, возникающих из-за отсечения теневого объема дальней плоскостью отсечения.Поскольку дальняя плоскость отсечения находится на конечном расстоянии от позиции глаза, метод отказа глубины почти наверняка даст неверный результат, когда теневой объем отсекается в дальней плоскости. Красная стрелка на Рисунке 14 представляет случай, когда метод отказа по глубине будет генерировать ошибки, поскольку задняя поверхность теневого объема была обрезана в дальней плоскости.


Рис. 14. Объем тени, обрезанный в дальней плоскости отсечения, вызывающий ошибки глубины


Мы можем решить проблемы отсечения, регулируя плоскости отсечения, но это не всегда целесообразно делать. Например, перемещение ближней плоскости отсечения сильно повлияет на точность определения глубины и может отрицательно сказаться на других операциях, использующих буфер глубины.

Марк Килгард [2] представил интересную идею обработки двух возможных сценариев, когда теневые объемы пересекают ближнюю плоскость отсечения. Идея заключалась в том, чтобы «закрыть» теневой объем в ближней плоскости отсечения, чтобы ранее обрезанные передние геометрии теперь можно было визуализировать в ближней плоскости отсечения. Первый сценарий — это когда все вершины силуэта окклюдера проецируются на ближнюю плоскость отсечения.В этом случае из всех обращенных вперед вершин внутри силуэта окклюдера создается четырехполосная петля. Затем четырехполосная петля проецируется на ближнюю плоскость отсечения, образуя таким образом покрытие для теневого объема.

Второй сценарий возникает, когда только часть теневого объема проецируется на ближнюю плоскость отсечения. Это оказывается намного сложнее, чем предыдущий сценарий. К его чести, Килгард разработал сложную систему для фильтрации вершин треугольников (обращенных от света), которые должны быть спроецированы на ближнюю плоскость отсечения, чтобы закрыть теневой объем.Ограничение теневых объемов в ближней плоскости отсечения породило еще одну проблему: точность глубины. Рендеринг геометрии на ближней плоскости отсечения аналогичен прокатыванию монеты по лезвию бритвы; монета может легко упасть с обеих сторон. Это означает, что ближняя плоскость может по-прежнему обрезать вершины, предназначенные для закрытия теневого объема. Чтобы преодолеть это, Килгард разработал еще один метод, который строит «уступ» диапазона глубины от точки наблюдения до ближней плоскости. Идея состоит в том, чтобы визуализировать теневой объем из диапазона глубины 0.от 0 до 1,0, в то время как нормальная визуализация сцены происходит в диапазоне глубины от 0,1 до 1,0. Уступ можно было встроить в усеченный вид, манипулируя матрицей перспективной проекции. Оказавшись на месте, ближняя плоскость отсечения закрывает теневые объемы со значением глубины 0,05, что составляет половину уступа. Эта идея действительно оригинальна, но она не решает проблему полностью. Трещины или «дыры» в теневой шапке ближней плоскости возникают очень часто, что приводит к ошибочным результатам. Вывод с проблемой ближней плоскости отсечения состоит в том, что на самом деле не существует тривиальных решений.По крайней мере, на момент написания этой статьи не существует надежного решения проблемы. Это делает технику глубокого прохода очень нежелательной.

К счастью, существует элегантное решение проблемы отсечения дальней плоскости, которая досаждает технике отказа глубины. Противоядием от этой проблемы является простое использование проекции с бесконечной перспективой или просто усеченной пирамиды с бесконечной перспективой. При проецировании дальней плоскости до бесконечности отсутствует математический шанс того, что теневой объем будет обрезан дальней плоскостью при рендеринге теневого объема.Даже если бы теневой объем был вытянут в бесконечность, дальняя плоскость в бесконечности все равно не обрезала бы его! Эрик Ленгьел представил математический вывод для матрицы перспективной проекции OpenGL в [11]. Здесь мы будем иметь дело с матрицей перспективной проекции Direct3D. Давайте начнем с рассмотрения стандартной матрицы левосторонней проекции в Direct3D:


(1)


Переменные:
n: расстояние в ближней плоскости
f: расстояние в дальней плоскости
fov[sub]w[/sub]: горизонтальное поле зрения в радианах
fov[sub]h[/sub]: вертикальное поле зрения в радианах

A дальняя плоскость на бесконечности означает, что расстояние дальней плоскости должно приближаться к ?.Следовательно, мы получаем следующую матрицу перспективной проекции, когда расстояние в дальней плоскости стремится к бесконечности:


(2)


Уравнение (2) определяет перспективный проекционный вид, простирающийся от ближней плоскости до дальней плоскости в бесконечности. Но абсолютно ли мы уверены, что вершины, которые мы выдавили в бесконечность с помощью 4D-однородного вектора, не обрезаются на бесконечности? К сожалению, мы не можем быть на 100% уверены в этом из-за ограниченной аппаратной точности. В действительности графическое оборудование иногда создает точки с нормализованной координатой z, незначительно превышающей 1. Затем эти значения преобразуются в целые числа для использования в буфере глубины. Это приведет к небольшому хаосу, поскольку наши операции с трафаретом полностью зависят от проверки значения глубины. К счастью, есть обходной путь для этой проблемы. Решение состоит в том, чтобы сопоставить значения z-координаты наших нормализованных координат устройства из диапазона от [0, 1] до [0, 1-e], где e — небольшая положительная константа. Это означает, что мы пытаемся сопоставить координату z бесконечно удаленной точки со значением, которое немного меньше 1.0 в нормированных координатах устройства. Пусть D[sub]z—[/sub] будет исходным значением координаты z, а D?[sub]z—[/sub] будет отображенной координатой z. Отображение может быть выполнено с помощью уравнения (3), показанного ниже:


(3)


Теперь воспользуемся уравнением (2) для преобразования точки A из пространства камеры (A[sub]cam[/sub]) в пространство клипа (A[sub]clip[/sub]). Обратите внимание, что пространство камеры также часто называют пространством глаз.



Что даст нам:


(4)


Давайте учтем желаемое отображение диапазона в уравнении (3), заменив D[sub]z—[/sub] на и D?[sub]z—[/sub] на :


(5)


Упрощая уравнение (5), используя значения, заданные уравнением (4), получаем:


(6)


Используя уравнение (6), мы можем применить наше отображение диапазона к матрице проекции P[sub]?[/sub], заданной уравнением (2), чтобы получить следующее:


(7)


Таким образом, мы можем использовать матрицу перспективной проекции, приведенную в уравнении (7), не опасаясь отсечения теневых объемов в дальней плоскости, происходящего на бесконечности! Вы можете задаться вопросом, повлияет ли растягивание объема усеченного изображения до бесконечности на точность буфера глубины.Ответ таков: да, это влияет на точность, но потеря точности на самом деле незначительна. Величина числового диапазона, потерянного при расширении дальней плоскости до бесконечности, составляет всего . Скажем, наша исходная ближняя плоскость отсечения находится на расстоянии 0,1 метра, а дальняя плоскость отсечения — на расстоянии 100 метров. Этот диапазон соответствует диапазону глубины [-1,0, 1,0]. Затем мы расширяем расстояние дальней плоскости до бесконечности. Диапазон от 0,1 метра до 100 метров теперь будет соответствовать диапазону глубин [-1, 0,999]. Диапазон от 100 метров до бесконечности будет соответствовать диапазону глубин [0.999, 1.0]. Потеря точности буфера глубины на самом деле не имеет большого значения. Чем больше разница между значениями n и f, тем меньше потеря точности буфера глубины. Вы можете найти приведенные выше выводы и многие другие связанные математические выводы в книге Эрика Ленгьела [12]. Следует отметить, что использование бесконечного усеченного представления означало, что нам нужно рисовать больше геометрий. Это может привести к потенциальной проблеме с производительностью.

Усеченная проекция с бесконечным обзором на самом деле является просто программным решением проблемы отсечения дальней плоскости.Марк Килгард и Касс Эверитт [10] представили аппаратное решение проблемы вместо использования усеченной пирамиды с бесконечным обзором. Новое графическое оборудование теперь поддерживает технику, называемую «фиксация глубины». На самом деле, расширение ограничения глубины, [font=»Courier New»][color=»#000080″]NV_depth_clamp[/color][/font], было специально добавлено к видеокартам Nvidia GeForce3 и выше, чтобы решить дальнюю плоскость. проблема отсечения теневых объемов. Если функция ограничения глубины активна, все объекты за пределами дальней плоскости отсечения будут отрисованы в дальней плоскости отсечения с максимальным значением глубины.Это означало, что мы можем проецировать закрытый теневой объем на любое произвольное расстояние, не опасаясь, что он будет обрезан дальней плоскостью, поскольку аппаратное обеспечение будет правильно обрабатывать рисунок. С такой автоматической поддержкой графического оборудования теневые объемы с ошибкой глубины реализовать очень легко. Мы можем расширить объем тени до бесконечности при рендеринге с нашим конечным усеченным обзором и по-прежнему получать правильные значения трафарета глубины-ошибки! Ну, компромисс — аппаратная зависимость. Если мы хотим, чтобы теневой объем с ошибкой глубины работал для любой видеокарты (с поддержкой трафарета), нам придется использовать усеченную проекцию с бесконечным обзором вместо расширения, ограничивающего глубину.

[size=»5″]Depth-Pass или Depth-Fail

Мы рассмотрели большинство методов и проблем с реализацией как методов глубинного прохода, так и глубинного провала для создания трафаретных теневых объемов. Итак, какой метод мы должны использовать в наших играх? Давайте подведем итоги плюсов и минусов обеих техник.

[size=»3″]Depth-pass

  • Преимущества
    • Не требует ограничения теневых объемов
    • Меньше геометрии для рендеринга проблема отсечения
    • Не требует бесконечной проекции перспективы
    • Недостатки
      • Ненадежность из-за неразрешимой проблемы отсечения в ближней плоскости[size=»3″]Ошибка глубины
        • Преимущества
          • элегантно решено
          • Недостатки
            • Требуется закрытие для формирования закрытых теневых объемов
            • Больше геометрии для рендеринга из-за запирания

            • Более медленный из двух методов
            • Немного сложнее реализовать
            • Требуется пас — лучшая техника из двух, но мы должны помнить, что он полностью провалится, когда o наша камера входит в теневой объем. До тех пор, пока не будет найдено возможное решение проблемы отсечения ближней плоскости, метод отказа по глубине по-прежнему требуется, если желательна надежная реализация. Выбор между двумя методами сильно зависит от ограничений игр, которые мы разрабатываем. Если отбрасывание теней требуется для игры с видом сверху или изометрическим видом, такой как Diablo, техники прохода в глубину будет достаточно. С другой стороны, для игр FPS было бы почти невозможно избежать ситуации, когда камера попадает в теневой объем.В этом случае метод глубины провала является единственным возможным решением. Конечно, мы также не должны забывать о других методах затенения, таких как карты теней. В определенных ситуациях, когда отбрасывающие тени в сцене слишком малы для того, чтобы можно было увидеть какое-либо самозатенение, было бы разумнее просто использовать проективное отображение теней. Для реалистичных мягких теней это также можно сделать дешевле, используя карты теней.

              В целом выгодно сочетать другие техники с объемными тенями для получения более качественных теней. Одним из примеров такой гибридной реализации является игровой движок Power Render X [16], который генерирует тени, используя теневые объемы, а затем затемняет тени в зависимости от расстояния от окклюдера, используя проективные текстуры.

              [size=»5″] Модные словечки: надежность и эффективность

              Создание реалистичных и точных теней в играх уже недостаточно, поскольку сложность игр резко возросла за последние 10 лет. Нам необходимо обеспечить надежную и в то же время эффективную реализацию трафаретных теневых томов.В случае надежности, использование метода отказа по глубине должно быть достаточным практически для любых мыслимых ситуаций. Тем не менее, аппаратные ограничения и низкая частота кадров иногда выдвигают технику отказа глубины за пределы нашего вычислительного бюджета. Есть много способов оптимизировать нашу реализацию теневого объема, чтобы создавать красиво выглядящие тени и при этом поддерживать частоту кадров выше этого важного ориентира в 20 кадров в секунду.

              Настоящими узкими местами в реализации трафаретного теневого объема являются определение силуэта и рендеринг теневого объема.Первый требует огромного количества циклов ЦП и ухудшается, если окклюдеры имеют большое количество полигонов. Последний является огромным потребителем невидимой скорости заполнения. Один очевидный способ уменьшить нагрузку на ЦП при определении силуэта — использовать модель окклюдера с более низким полигоном. Еще один эффективный способ — определять новый силуэт только через каждые 2-4 кадра. Это основано на предположении, что положение источника света или положения окклюдера не меняется очень резко в течение 2-4 кадров. Это предположение оказывается довольно хорошим для большинства случаев.

              Помните, что дополнительные геометрии укупорки, используемые для формирования закрытого теневого объема в методе отказа глубины, способствовали тому, что метод отказа глубины стал более дорогим? Мы можем значительно уменьшить геометрию покрытия для окклюдеров, которые имеют относительно мало деталей на поверхностях, часто обращенных к свету. Маленькая детализация здесь означает меньшее количество геометрических деталей, что означает, что поверхность довольно плоская и обычно создает почти или полностью выпуклые силуэты корпусов. Если это так, мы часто можем создать треугольную полосу, которая будет использоваться в качестве передней крышки, чтобы закрыть теневой объем.Мы должны отметить, что это приближение и, следовательно, приведет к неправильным теням под определенными углами. Однако это приближение должно работать очень хорошо для небольших объектов.

              Для реализации Direct3D также рекомендуется использовать «сварные» сетки. Сварная сетка просто означает, что нет повторяющихся вершин, представляющих одну и ту же точку. Чтобы увидеть пример «несварной» сетки, откройте инструмент просмотра сетки и создайте куб. Посмотрите на информацию о вершинах куба, и вы увидите, что их 24, а не 8 вершин.Это неизбежно, так как версия вершины Direct3D содержит информацию о цвете и нормали, которые не могут использоваться разными гранями, относящимися к одной и той же точке; следовательно, для разных граней генерируются дополнительные вершины. Дополнительные вершины являются излишними, но их нельзя удалить во время расчета силуэта без значительного объема работы по сравнению. Поэтому разумнее использовать сварные сетки для определения силуэта. Утилита просмотра сетки Direct3D предоставляет отличную возможность сделать именно это.Нажмите [font=»Courier New»][color=»#000080″]MeshOps[/color][/font], затем [font=»Courier New»][color=»#000080″]Объединить вершины[/color][ /font], отметьте [font=»Courier New»][color=»#000080″]Удалить треугольники встык[/color][/font], [font=»Courier New»][color=»#000080″ ]Регенерировать смежность[/color][/font] и [font=»Courier New»][color=»#000080″]Объединить все вершины[/color][/font] перед сваркой. Кроме того, мы также можем использовать функцию сетки [font=»Courier New»][color=»#000080″]D3DXWeldVertices[/color][/font], чтобы сварить сетку самостоятельно.

              Что касается невидимой скорости заполнения, то она действительно неизбежна. Однако мы, вероятно, могли бы уменьшить влияние, установив состояние рендеринга [font=»Courier New»][color=»#000080″]D3DRS_COLORWRITEENABLE[/color][/font] в Direct3D перед рендерингом теневого объема. Мы можем использовать его, чтобы отключить отрисовку красного, зеленого, синего и альфа-канала, поскольку нас интересует только заполнение буфера трафарета.

              Еще одна область, на которую следует обратить внимание, — это управление освещением, отбрасывающим тени, в нашей 3D-сцене.Грамотное управление источниками света обязательно пойдет на пользу процессу создания теневого объема. Эмпирическое правило состоит в том, чтобы количество источников света, отбрасывающих тень, не превышало 4 одновременно. Будущее аппаратное обеспечение или улучшенные алгоритмы аннулируют предыдущее утверждение, но на данный момент оно служит хорошим ориентиром и, вероятно, останется таковым, по крайней мере, в течение следующих 2 лет. Важным аспектом управления источниками света является метод, используемый для выбора источников света, которые должны быть включены в процесс создания теневого объема.Основными параметрами, которые следует принимать во внимание, могут быть интенсивность, расстояние от зрителя, актуальность для текущего игрового процесса и, наконец, визуальная важность. Взгляните на прекрасную статью Чарльза Блума [4] о выборе источников света для отбрасывания теней.

              Давайте обсудим высокоуровневую оптимизацию, которую мы можем использовать для дальнейшего ускорения наших игр с поддержкой теневого тома. На самом деле мы можем использовать технику прохода глубины, когда уверены, что камера не находится внутри каких-либо теневых объемов.Это можно сделать довольно легко, сформировав почти клиповый объем. Положение источника света и четыре стороны ближней плоскости используются для определения пирамиды. Ближняя плоскость замыкает пирамиду и, таким образом, образует ближний объем. Если окклюдер находится полностью за пределами этого объема, мы можем безопасно использовать технику прохода глубины, поскольку теневой объем окклюдера не имеет шансов пересечь ближнюю плоскость. Эрик Ленгьел также описал использование поддержки ножничных прямоугольников OpenGL, чтобы сократить штраф за скорость заполнения при рендеринге теневых объемов и освещенных фрагментов. Однако в DirectX 8.1 всесторонняя высокоуровневая поддержка прямоугольников-ножниц еще недоступна. Подробнее об этих двух оптимизациях см. в [11].

              Наконец, мы должны агрессивно использовать любую доступную аппаратную поддержку. Ожидается, что будущие графические процессоры будут поддерживать двустороннее тестирование трафаретов, что позволит нам одновременно визуализировать переднюю и заднюю грани теневых объемов. Это обеспечило бы большую экономию при рендеринге теневого объема за счет сокращения вдвое стоимости настройки геометрии, стоимости преобразования вершин и стоимости передачи геометрии, поскольку нам нужно было бы только один раз протолкнуть геометрию теневого объема через конвейер.Аппаратное обеспечение автоматически позаботится об отбраковке передней и задней граней, выполняя 2 прохода трафарета для одного и того же набора геометрий. Также следует использовать аппаратную поддержку фиксации глубины для привязки геометрии теневого объема к дальней плоскости без дополнительных затрат. Наконец, давайте рассмотрим одну из самых важных возможностей современного графического оборудования, которую мы должны использовать в полной мере: вершинные шейдеры.

              [size=»5″]Shadow Volumes Powered By Vertex Shaders

              Среди всего множества улучшений коммерческого графического оборудования введение программируемого конвейера обработки вершин (вершинных шейдеров), пожалуй, лучшее, что может случиться с любым, кто внедряет теневые объемы.Самым большим преимуществом создания теневых объемов в вершинной программе является то, что нам не нужно загружать геометрию теневых объемов всякий раз, когда они создаются. Весь теневой объем может находиться в аппаратной памяти в виде статических буферов вершин. Сохраненная полоса пропускания данных может быть весьма существенной. Кроме того, операции с плавающей запятой, выполняемые на программируемом аппаратном обеспечении вершин, невероятно быстры. Однако здесь необходимо отметить, что реализация теневого тома, полностью использующая вершинную программу, может фактически снизить производительность при определенных обстоятельствах. Мы поговорим об этом в конце этого раздела.

              Чтобы использовать мощь вершинных шейдеров, нам нужно сначала предварительно обработать геометрию нашего окклюдера. Текущее аппаратное обеспечение вершинных шейдеров не имеет возможности генерировать новые вершины на лету. Это строго конвейер с 1 входной и 1 исходящей вершиной. Это создает проблему, так как нам нужно создать новые вершины из краев силуэта, чтобы сформировать теневой объем. Решение состоит в том, чтобы создать все дополнительные вершины, которые необходимы во время предварительной обработки.Попав в вершинный шейдер, мы генерируем теневой объем, используя эти дополнительные вершины. Давайте посмотрим, как это делается.

              Нам нужно создать четырехугольник для каждого ребра (2 вершины), который является общим ровно для 2 граней. Четырехугольник можно рассматривать как «вырожденный» четырехугольник, образованный исходным ребром, общим для двух разных граней. Обе грани вносят одно и то же ребро в вырожденный четырехугольник. Поскольку ребра с обеих граней одинаковы с точки зрения положения, вырожденный четырехугольник имеет «нулевую длину». Единственное отличие состоит в том, что ребра содержат информацию о нормали соответствующей грани.Оказавшись в вершинной программе, мы расставляем точки на векторе света и нормали вершины. Если результат положительный, вершины проходят через вершинную программу нетронутыми. Если результат отрицательный, мы выдавливаем его в направлении вектора света. Этот метод элегантно создает закрытый теневой объем, поскольку геометрия, обращенная к свету, остается нетронутой для формирования передней крышки, в то время как геометрия, обращенная от света, выдавливается для формирования сторон теневого объема и задней крышки.

              Если вы не знаете, как это работает, попробуйте этот пример.Представьте сферическую сетку с точечным источником света слева от нее. Все левое полушарие обращено к свету, и, следовательно, все геометрии, определяющие левое полушарие, остаются нетронутыми для формирования передней крышки. Однако все правое полушарие обращено в сторону от света. Следовательно, все геометрии, определяющие правое полушарие, выдавливаются, образуя заднюю крышку. Стороны теневого объема автоматически формируются вырожденными четырехугольниками, расположенными вдоль краев силуэта. В этом случае края силуэта образуют точно вертикальную линию посередине сферы.Это работает, потому что выдавливается ровно 1 ребро на вырожденный четырехугольник из ребер силуэта. Ранее вырожденный четырехугольник теперь становится нормальным четырехугольником, определяющим стороны теневого объема. Крис Бреннан представил короткую статью в [15] о реализации выдавливания теневого объема в вершинной программе.

              Следует отметить, что необходимая предварительная обработка создает множество дополнительных геометрий. На самом деле полезны только вырожденные четырехугольники по краям силуэта. Остальные просто бездействуют, но все еще проходят через конвейер обработки.Однако генерация теневого тома теперь может полностью выполняться на графическом оборудовании, и в большинстве случаев производительность, как правило, намного выше, чем реализация без шейдера.

              Недавно Марк Килгард указал, что вычисление краев силуэта в вершинном шейдере может отрицательно сказаться на производительности, если окклюдеры имеют большое количество полигонов или если имеется много теней, отбрасывающих источники света. Эта оценка исходит из того, что нам нужно протолкнуть больше вершин в конвейер, и все они должны пройти через тестирование ребер силуэта в вершинном шейдере.Следовательно, окклюдеры с большим количеством полигонов будут генерировать большое количество потерянных вершин (вырожденных четырехугольников), и стоимость тестирования всех этих дополнительных вершин может не покрыть экономию на загрузке геометрии, которую мы получаем с помощью вершинных шейдеров! Очевидно, что наличие большего количества источников света еще больше ухудшит реализацию такого вершинного шейдера. Следовательно, реализация теневого тома на программируемом вершинном оборудовании должна быть тщательно протестирована, чтобы убедиться, что у нас есть чистый прирост производительности по сравнению с реализацией, использующей ЦП. Если процессор нужен для тяжелого ИИ. или вычисления игровой логики, реализация вершинного шейдера теневых объемов может быть более эффективной. Однако во многих случаях также может быть лучше просто использовать вершинный шейдер в качестве вспомогательного средства, вместо того, чтобы пытаться делать все в вершинном шейдере. Мораль этой истории такова: всегда не забывайте включать все (ИИ, физику, звук, ввод, сеть, рендерер и т. д.) в своей игре и тестировать, тестировать и еще раз тестировать!

              И, наконец, более обширная и глубокая статья о технике объемного трафарета будет доступна в готовящейся книге ShaderX2 (www.shaderx2.com). В статье в книге более подробно рассматриваются алгоритмы, связанные с трафаретным теневым объемом, с подробным обсуждением оптимизации, рабочего процесса и управления сценой, а также «обманок», используемых в коммерческих 3D-движках для ускорения надежной реализации теневого объема. Также будет 6 обширных примеров, которые охватывают обычный процессор, реализацию графического процессора на ассемблере и реализацию графического процессора с использованием нового языка шейдеров высокого уровня (DirectX9. 0). Книга представляет собой сборник многих передовых методов шейдеров, разработанных профессионалами и инженерами, работающими в этой области.Он будет доступен, возможно, в августе 2003 г., редактором является г-н Вольфганг Энгель.

              [size=»5″]Shadow Volumes At Work

              Трафаретная техника объемной тени с ошибкой глубины. Демонстрация точного самозатенения и затенения несколькими окклюдерами. Передние грани теневого объема нарисованы, чтобы визуально оценить выдавливание силуэта из точечного источника света. Проволочный каркас окклюдеров и теневой объем. Геометрия окклюдера была опущена, чтобы показать переднюю и заднюю части теневого объема.Легкая лицевая геометрия образует переднюю крышку. Отсечение теневого объема в ближней плоскости вызывает ошибки, когда камера входит в теневой объем в технике прохода глубины. Отсечение теневого объема в дальней плоскости вызывает ошибки в методе отказа глубины. Большое спасибо Augustin Denis за предоставленные модели истребителей XWing и Tie. (Эти модели являются фан-артом)

              [size=»5″]Reference

              [1]: Mark Kilgard, http://developer.nvi…ATT/stencil.pdf
              [2]: Mark Kilgard, http://разработчик.nvi…ows_CEDEC_E.pdf
              [3]: http://developer.nvi…_shadow_volumes
              [4]: ​​Чарльз Блум, http://www.cbloom.co…adow_issues.txt
              [5] : Тим Хайдманн, http://developer.nvi…owsRealTime.pdf
              [6]: Джон Кармак, http://developer.nvi…adowVolumes.txt
              [7]: Билодо, Билл и Майк Сонги. «Тени в реальном времени», Creativity 1999, Creative Labs Inc. Спонсировала конференции разработчиков игр, Лос-Анджелес, Калифорния и Суррей, Англия, май 1999 г.
              [8]: Фрэнк Кроу. Алгоритмы теней для компьютерной графики.Компьютерная графика, Vol. 11, No.3, Proceedings of SIGGRAPH 1977, July 1977.
              [9]: Cass Everitt and Mark Kilgard, http://developer.nvi…adowVolumes.pdf
              [10]: Cass Everitt and Mark Kilgard, http://developer.nvi…adowVolumes.pdf ://developer.nvi…adowVolumes.pdf
              [11]: Eric Lengyel, http://www. gamasutra…/lengyel_01.htm
              [12]: Eric Lengyel, «Математика для программирования 3D-игр и компьютеров». Графика», Charles River Media, 2002
              [13]: Томас Моллер, Эрик Хейнс. «Визуализация в реальном времени», 2-е [/sup] издание, AK Peters Ltd, 2002 г., ISBN: 1-56881-182-9 .
              [14]: Вольфганг Ф. Энгель, Амир Гева и Андре Ламот. «Начало программирования игр Direct3D», Prima Publishing, 2001, ISBN: 0-7615-3191-2.
              [15]: Вольфганг Ф. Энгель. «Советы и приемы Direct3D ShaderX Vertex и Pixel Shader», Wordware Publishing Inc, 2002.
              [16]: игровой движок Power Render X. http://www.powerrend…m/prx/index.htm
              [17]: веб-сайт Gamasutra. http://www.gamasutra.com/

%PDF-1.2 % 681 0 объект > эндообъект внешняя ссылка 681 84 0000000016 00000 н 0000002031 00000 н 0000002388 00000 н 0000002443 00000 н 0000002502 00000 н 0000002559 00000 н 0000002618 00000 н 0000002678 00000 н 0000003510 00000 н 0000004095 00000 н 0000004162 00000 н 0000004276 00000 н 0000004387 00000 н 0000004519 00000 н 0000004646 00000 н 0000004773 00000 н 0000004897 00000 н 0000005079 00000 н 0000005249 00000 н 0000005377 00000 н 0000005503 00000 н 0000005633 00000 н 0000005804 00000 н 0000005917 00000 н 0000006031 00000 н 0000006166 00000 н 0000006331 00000 н 0000006453 00000 н 0000006585 00000 н 0000006711 00000 н 0000006878 00000 н 0000006999 00000 н 0000007140 00000 н 0000007294 00000 н 0000007452 00000 н 0000007609 00000 н 0000007766 00000 н 0000007923 00000 н 0000008080 00000 н 0000008238 00000 н 0000008396 00000 н 0000008552 00000 н 0000008649 00000 н 0000008862 00000 н 0000023038 00000 н 0000023425 00000 н 0000023648 00000 н 0000041161 00000 н 0000041688 00000 н 0000041917 00000 н 0000077291 00000 н 0000078041 00000 н 0000078286 00000 н 0000103158 00000 н 0000103583 00000 н 0000104050 00000 н 0000104231 00000 н 0000104261 00000 н 0000131736 00000 н 0000131959 00000 н 0000131982 00000 н 0000133176 00000 н 0000133418 00000 н 0000133804 00000 н 0000142327 00000 н 0000142534 00000 н 0000142557 00000 н 0000143787 00000 н 0000143810 00000 н 0000144924 00000 н 0000144947 00000 н 0000146071 00000 н 0000146094 00000 н 0000147180 00000 н 0000147203 00000 н 0000148308 00000 н 0000148331 00000 н 0000149456 00000 н 0000149479 00000 н 0000150583 00000 н 0000150790 00000 н 0000150869 00000 н 0000002836 00000 н 0000003488 00000 н трейлер ] >> startxref 0 %%EOF 682 0 объект > >> /LastModified (D:20030106145431) /МаркИнфо > >> эндообъект 683 0 объект [ 684 0 Р 685 0 Р 686 0 Р 687 0 Р ] эндообъект 684 0 объект > /Ф 23 0 Р >> эндообъект 685 0 объект > /Ф 42 0 Р >> эндообъект 686 0 объект > /Ф 44 0 Р >> эндообъект 687 0 объект > /Ф 722 0 Р >> эндообъект 688 0 объект > эндообъект 763 0 объект > ручей Hb«`f`a`g`Py À

Поиск трехмерных фигур и наборов элементов

Visio работает в основном в двух измерениях, но включает некоторые трехмерные (3D) фигуры. Вот несколько способов их найти.

Просмотрите тип диаграммы

Некоторые типы диаграмм, такие как Блок-схемы, Карты и Сеть, имеют встроенные наборы элементов трехмерных фигур. Найдите некоторые из них в окне Фигуры — нажмите Другие фигуры , затем укажите тип диаграммы, которую вы создаете. Ищите «3D» в названии трафарета.

Использовать поиск фигур

В окне Shapes щелкните Search .

Введите 3D в поле поиска. Этот поиск возвращает только фигуры, в названии которых есть термин «3D», поэтому результаты могут быть неполными.

Смотреть онлайн

Чтобы найти 3D-фигуры и наборы элементов в Интернете, выполните поиск в Центре загрузки Майкрософт Visio shape .

Некоторые люди и компании за пределами Microsoft также создают трехмерные фигуры:

  • Производители оборудования      Если вы ищете формы, представляющие определенные части оборудования, вы часто можете найти их на веб-сайте производителя оборудования.

  • MVP Connection для Visio     Образцы фигур можно найти на MVP Connection для Visio, независимом веб-сайте, управляемом Microsoft Most Valuable Professionals (MVP), специализирующемся на Visio. Сайт MVP Connection for Visio ссылается на сайты отдельных MVP, которые также могут предоставлять другие загрузки 3D-шаблонов.

  • Другие внешние сайты      Некоторые веб-сайты, которыми управляют независимые пользователи Visio и компании, предлагают фигуры и другие загрузки.

Сохранение загруженных трафаретов

  1. После загрузки набора фигур скопируйте его в папку Мои фигуры в папке Мои документы .

  2. Чтобы открыть набор элементов в Visio, в окне Фигуры щелкните Дополнительные фигуры , выберите Мои фигуры и щелкните имя набора элементов.

    Дополнительные сведения о загрузке и использовании новых фигур см. в разделе Импорт загруженных наборов элементов.

Stencil Portal в Unity — анализ визуальных эффектов | by Shahriar Shahrabi

Портал был основной частью визуальных эффектов. Есть несколько способов добиться чего-то подобного. Один из способов — отрендерить сцену с помощью другой камеры, сопоставить матрицу преобразования обеих камер, чтобы они перекрывали миры, и использовать текстуру рендеринга камеры в качестве текстуры меша портала (в данном случае это средняя часть изображения). пергамент).Эта техника прекрасно описана здесь Себастьяном Лагом.

Хотя описанный выше способ дает вам большую свободу, он более сложен в настройке и требует больших затрат производительности, чем буфер трафарета. Ronja довольно хорошо описывает настройку трафарета, так что посмотрите этот пост, если вы ничего не знаете об этой теме.

Вот очень краткое описание. Вы можете представить себе этот процесс таким образом: в проходе вы визуализируете маску на экране, используя сетку вашего портала, указывая, где на экране должен быть отрисован ваш портальный мир.Например, там, где находится ваша портальная сетка, она будет белой, а везде — черной. Затем, когда вы рисуете свой портальный мир, вы рисуете только там, где эта маска белая. И когда вы рисуете мир за пределами портала, вы не рисуете там, где маска белая.

Для этого даже трафаретный буфер не нужен. Вы можете нарисовать эту маску в отдельном проходе на отдельном целевом объекте рендеринга, прежде чем рисовать свою сцену, и во время рендеринга привязать ее к шейдерам вашей сцены. Таким образом, вы даже можете делать такие вещи, как размытие маски, чтобы получить мягкие границы.Итак, почему трафарет?

Есть несколько проблем с этим. Существует стоимость, связанная с переключением цели рендеринга во время цикла рендеринга. Поскольку вам нужно сначала отрендерить маску в другой текстуре, вы будете переключать цель рендеринга один раз чаще, чем необходимо за кадр. Кроме того, вам нужно хранить в памяти дополнительную текстуру размером с ваш экран. Также есть накладные расходы на вызов функций разделения фрагментов для замаскированных пикселей. Ваша маска привязана к вашему фрагментному шейдеру, и даже если в самом начале вашего фрагментного шейдера вы проверяете, следует ли отрисовывать фрагмент, и отбрасываете его, если нет, фрагментный шейдер все равно должен быть выполнен.

Буферы трафарета решают некоторые из этих проблем. Сами значения Stencil сохраняются вместе в вашем буфере глубины. Таким образом, они более эффективно используют память, чем 32-битная текстура всего экрана. Вдобавок ко всему, поскольку буфер трафарета интегрирован в ваш буфер кадра, вам не нужно переключать цели рендеринга в середине цикла. Однако проверка трафарета выполняется после выполнения фрагментных шейдеров, поэтому она не только не помогает сэкономить пропускную способность и вычислительные ресурсы из-за ненужного выполнения фрагментного шейдера, с очень тяжелыми фрагментными шейдерами она может работать хуже по сравнению с отбрасыванием фрагмент + маска как комбинация текстур. Однако основной причиной, по которой я решил использовать для этого трафарет, была простота его настройки.

Мы просто делим нашу сцену на две части, все внутри портала и все за пределами портала. Затем мы визуализируем внутреннюю часть, где трафаретная маска имеет определенное значение, и внешнюю часть, где это не так. Это оставляет нас с проблемой. Любой объект, являющийся частью внешнего мира и находящийся между порталом и камерой, также маскируется. Это нежелательное поведение, поскольку все, что находится перед порталом во внешнем мире, все равно должно отображаться.

Существуют разные способы решения этой проблемы. Некоторые из них требуют более сложного предварительного прохода, когда при заполнении буфера трафарета вы удаляете секции перед порталом, используя комбинацию операций трафарет + глубина. Однако я выбрал очень простое решение.

Мой цикл рендеринга выглядит следующим образом:

  1. Рендеринг сетки портала со значением Stencil 1 (глубина и фрагменты списаны)
  2. Рендеринг непрозрачных шейдеров мира портала, где буфер трафарета равен 1 буфер трафарета равен 1
  3. Снова визуализировать меш портала, но на этот раз глубина рендеринга (фрагмент все еще отключен)
  4. Теперь визуализировать все остальное непрозрачным, нет необходимости выполнять проверки трафарета, поскольку значение буфера глубины останавливает рендеринг все, что находится за поверхностью портала
  5. Рендеринг прозрачных объектов, также без проверок трафарета

Приведенная выше настройка позволяет правильно визуализировать сцену ниже.

Рисунок -4- Объекты перед порталом отображаются правильно

Вам не нужно ничего делать на стороне C#, чтобы получить этот порядок рендеринга. Вы можете использовать теги Renderqueue в Unity внутри шейдера, чтобы регулировать порядок рендеринга. Вы начнете с Geometry-5 и для каждого из шагов уменьшите «5» на единицу вниз.

Для призрака я смоделировал простую модель в Blender. В Unity у него есть аддитивный шейдер, который смешивает его с фоном. Чтобы глаза и рот оставались черными, я пометил эти вершины вертексным цветом.Вы также можете удалить лица, но я хотел иметь возможность отрисовывать их бледно, если мне это нужно.

Рисунок -5- Призрак

Для их движения я перемещаю их вверх в вершинном шейдере в зависимости от времени. При движении вверх они деформируются на основе трехмерного симплексного шума, который процедурно вычисляется с использованием положения вершины (включая движение вверх). Это вызывает деформацию и движение медузы, которую вы видите.

Рисунок -6- Деформация призрака

Время жизни призрака имеет определенный период. В конце периода я затемняю его, затем в C# переориентирую объект с новым локальным направлением. Таким образом, мне не нужно создавать новых призраков, и они будут появляться вечно, каждый раз в новом направлении.

Пламя свечи очень похоже. Они также имеют аддитивный шейдер и также деформируются с помощью простых синусоидальных волн во времени и пространстве. Деформация происходит на базовой сетке, которая уже имеет форму пламени. Все языки пламени свечи отрисовываются в одном вызове отрисовки, поэтому вместо пространства объектов (они имеют общую точку опоры) я использую пространство UV свечей для управления шумом и деформацией.Используя uv-пространство, я уменьшаю количество искажений ближе к основанию пламени. Текстура свечей также расписана вручную.

Рисунок -7- Пламя свечи

Вы могли заметить, что когда вы перемещаетесь по сцене, кошка следует за вами, вращая головой. Это вращение выполняется в вершинном шейдере и является процедурным. Между тем запеченная тонкая анимация движения его тела и ушей все еще происходит.

Shadow Volume (Stencil Shadow) — 원리 (1/2) :: IT개발노트

Shadow Volume (Stencil Shadow)

 

최초작성 : 2020-04-29

마지막수정 : 2020-04-30

최재호

 

Номер телефона

Shadow Volume을 이해하고 구현 합니다.내용이 많아서 알고리즘/구현 부분으로 분리하여 설명 할 것입니다. 이 장은 Shadow Volume 생성과 Shadow 판정 알고리즘을 다룹니다.

 

Номер телефона

Shadow Volume 은 이름처럼 Shadow caster와 Light 방향을 기준으로 Shadow Volume 을 만들어 Shadow 를 만듭니다. Объем тени 내부에 있는 경우 Shadow 를 받고, 그렇지 않은 경우 Shadow 를 받지 않습니다. 이러한 처리를 위해서 Stencil buffer를 활용합니다. Shadow Volume 은 은 존의 다른 Shadow map 비해서 굉장히 정확한 형태의 Shadow 를 만듭니다. 그리고 Shadow edge 는 Hard edge 형태입니다.

 

Теневой том

 

Shadow Volume (Объем теней) 을 만드는 Shadow Caster Object 의 메시는 반드시 닫혀있어야 합니다.삼각형들 사이에 틈이 있다면 이 부분 때문에 Shadow 영역에 빛이 새는 현상이 발생합니다.

빛샘 현상. 원본 오브젝트의 Mesh 에 틈이 있으면 Shadow Volume 역시 틈이 생겨서 위와 같이 Shadow 판정에 문제 발생 (GPU Gems: Efficient 9 Shadow Volume Rendering)

 

Shadow volume (Теневой том) не поддерживает ЦП и ГП, а также не поддерживает его. Центральный процессор, Light의 방향이 변경되면, Shadow Volume, 을 다시 만들어야 한다는 점입니다. 하지만 GPU 방식에서는 Shadow Volume 생성 연산을 GPU로 옮겨 실시간으로 Shadow Volume 을 만들 수 있습니다.

 

먼저 Shadow Volume 생성 알고리즘 은 다음과 같습니다.

 

  1. Shadow Volume 생성을 위한 Vertex 인접 정보 구성
  2. Light 방향을 기준으로 Shadow Volume 생성
    1. Shadow Volume 측면
    2.  Передняя крышка Shadow Volume
    3. Задняя крышка Shadow Volume
  3. ДОСТУПНОСТЬ
    1. Окружающий свет 로 Рендеринг объекта
    2. 현재 라이트 기준으로 각 오브젝트의 Shadow Volume 을 그림
      1.  Shadow Volume의 Triangle의 감기방향(CW or CCW)에 따라 Буфер трафарета 증가 или 감소
    3. Базовый пропуск — 현재 라이트 기준으로 각 오브젝트 렌더링
      1. Буфер для трафарета 의 값을 참고하여 오브젝트의 Light 처리 진행
  4. 모든 라이트에 대해서 2)~3) 과정 반복

위의 과정을 차근차근 알아봅시다.

 

[1]. Shadow Volume 생성을 위한 Vertex 인접 정보 구성

[2]. Light 방향을 기준으로 Shadow Volume 생성

위의 그림에서 처럼 Shadow Volume을 만들려면 오브젝트의 인접정보에서 측면에 해당하는 Edge 들실필 땈봤한.

오브젝트에 속한 모든 삼각형을 기반으로 아래 정보를 생성합니다.

1. 삼각형이 가지고 있는 Vertices

2. 삼각형이 가지고 있는 Edges

 

이 정보를 기반으로 빛의 방향에 측면에 위치하는 Edge들을 모두 검출합니다. 검출된 Edge들을 Light의 방향으로 확장(Extrude) 시킵니다.

 

오브젝트의 Vertex 인접 정보들로 Edge를 검출하는 방법은 아래와 같습니다.

1. 오브젝트의 모든 삼각형들 중 삼각형이 Light 로 or 반대로 향하는 삼각형들의 Edge들을 EdgeSet 컨셌쀐붔붨셌쀐는.

2. 만약 이미 추가된 Edge의 경우 제거합니다.

 

오브 젝트 에 구멍이 있지 않고 서로 잘 연결 되었다면 되었다면 되었다면 처럼 처럼 파란색 것 들은 들은것. 그렇지 않다면 모든 Edge는 두개의 삼각형이 Edge를 공유하고 있기 때문에 모두 제거될 것 입니다.

파란색 선의 Edge 는 중복되지 않음. (그림에는 사각형 실선이지만 실제로는 삼각형임)

이렇게 얻어진 Edge를 확장하여 Shadow를 만드는 것은 아래와 같습니다.

이 상황에서 이런 생각이 들수 있습니다. «위의 그림처럼 추가된 녹색 Vertex는 Light 방향으로 얼마만큼 멀리 떨어진 위치에 만들어야 하나?» Теневая тома 내부 에 있는 오브 가 가 가 를 받는 으로 처리 처리 되어야 하기 좋을 가능 하면 하면 이 값 은 좋을 것 것것적당히 큰 값 을 을 사용 도 도 좋지만 좋지만 좋지만 좋지만 좋지만 좋지만 좋지만 좋지만 추가 추가 한 녹색 점 이 카메라 에서 가장 먼 위치 있도록에

 

아래 이미지를 보면, far 를 lim 를 사용해 무한대로 보내어 우측의 Projection Matrix를 얻어냅니다. Бесконечная проекционная матрица

Уловки с проекционной матрицей Эрик Ленгьел

 

무한의 점에 위치시키기 위해서는 Point가 아닌 Vector 형태로 초록색 점을 표현해야 합니다. 그 이유는 아래의 슬라이드 처럼 (x, y, z, 0)의 경우 Infinite Porjection Matrix가 Z값을 1로 만들어 주기 때문입니다.

Уловки с проекционной матрицей Эрик Ленгьел

 

그래서 새로 추가한 초록색 점은 Vector 형태 (x, y, z 0), 기존 Edge의 Vertex는 (x, y, z, 1) 을 사용하여 Shadow Volume 의 의 멤봈.

 

Shadow Volume 의 Передняя крышка과 Задняя крышка은 각각 Shadow Volume의 윗면과 아래 면입니다. 이 부분까지 만들어 주면 Shadow Volume은 이름 그대로 하나의 닫힌 공간이 됩니다. Shadow Cap 이 없다면, Shadow Volume 내부에서 Shadow를 바라보거나 Light를 바라볼때 문제가 생길 수 있습니다. 이 후 Буфер трафарета 현재는 Shadow Volume의 Cap을 생성하는 방법만 알아봅시다.

 

Передняя крышка 은 Light를 바라보고 있는 삼각형 면으로 생성하면 되며 Point 형태로 구성합니다. Задняя крышка 의 경우 는 위 에서 에서 에서 (extrude) 하는 경우 경우 사용 했던 방식 대로 대로 대로 형태 형태 구성 하여 하여 하여 하여 하여 하여 의 의 의 에 존재 하도록 하도록.

 

[3] 렌더링(생성한 Shadow Volume으로 렌더링)

자, 이제 Shadow Volume을 다 만들었습니다. Shadow Volume을 가지고 Shadow 를 만들어 봅시다.

 

1. 먼저 Ambient Light 만으로 오브젝트들을 모두 렌더링합니다.

2. 이제 Shadow Volume 으로 Shadow가 드리우는 위치를 Stencil buffer 에 표시합니다.

 1). 1번 과정에서 사용한 렌더타겟을 그대로 유지합니다. (컬러, 깊이 버퍼 유지)

 2). 컬러, 깊이 값을 쓰지 않도록 설정

 3). Режим отбраковки 상관없이 모두 렌더링하도록 설정 (CW, CCW 모두)

 4). 스텐실 버퍼를 활성화 (глубокий провал 알고리즘 사용)

 (1). Front Face이고 Depth Test가 실패한 경우 Stencil Value Increment Wrap (앞면방향이면 스텐실 값 증가, 최대값 초과면 최소값으로)

 (2).Back Face익 Depth Test가 실패한 경우 Stencil Value Decrement Wrap (후면방향이면 스텐실 값 감소, 최소값 미만이면 최대값으로)

3. Пропуск освещения

 1). 2번 과정에서 사용한 렌더타겟을 그대로 유지합니다. (컬러, 깊이 버퍼 유지)

 2). 컬러, 깊이 값을 쓰기 허용

 3). Detph는 기존 깊이 버퍼 값과 같은 경우만 렌더링

 4). Stecil 값이 0인 경우만 렌더링 하도록 설정 (Stencil 값이 0이 아니면 Тень)

4. 모든 라이트에 대해서 2~3 과정 반복

 

여기서 Stencil buffer 사용해서 현재 렌더링 중인 픽셀이 Shadow Volume 내부에 있는가? 여부를 판정하는 부분을 좀 더 자세히 보겠습니다.이 과정은 GPU 에서 Collision Check 하는 알고리즘이라고 생각할 수 있습니다.

아래 그림이 이 알고리즘을 잘 보여줍니다.

2D 로 간략화 된 Работа с трафаретом. 빨간색 선이 Shadow Volume의 Front Face, 파랑색 선이 Shadow Volume의 Back Face

이 그림의 알고리즘은 위에서 설명한 depth fail 알고리즘이 아닌 기본 알고리즘입니다. Тест глубины 성공시에 Stencil buffer의 값을 증가/감소 시킵니다. 하지만 이 알고리즘은 아래와 같은 취약점이 있습니다.

Near Plane 에 걸려 Shadow Volume 의 Fron face를 렌더링 할 수 없게 된 경우. 아래 이미의 Zero 부분이 Zero가 되지 않고 Shadow 영역으로 판정될 수 있습니다.

 

 

그래서 아래와 같이 Ошибка глубины 알고리즘을 사용합니다.아래 의 그림 에서 빨간 네모 영역 에 하면 젝트 젝트 가 한다 고 하면 젝트 젝트 가 존재 한다 하면 하면 젝트 젝트 가 한다 고 하면 하면 하면 하면 하면 하면 하면 하면 하면 하면 하면 고 하면 하면 하면 하면 하면 이 이 경우 경우 는 오른쪽 파란색 영역 에 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 있는 Тень Тени 일 것 입니다.

Ошибка глубины 알고리즘

그래서 눈 눈 위치 에서 가장 먼곳 부터 Track Buffer 값 을 변경 하므로써, возле плоскости 에 의해 계산 되지 않는 Naight Thream 정보 는 없게 됩니다.

Глубина не удалась 알고리즘 방식 으로 했을 때 아래 의 파란색 동그라미 부분 도 정확히 정확히 영역 으로 판정 되는 것 을 알수 있습니다.

 

이런 이유로 Light Pass 에서 현재 픽셀에 대응하는 Stencil buffer 의 값이 0 이 아닌 경우 Shadow Volume 내부라는 것을 알 눘 수 수 수

 

이제까지 Shadow Volume의 생성과 Shadow 판정 알고리즘에 대해서 알아봤습니다.

설명이 너무 길어져서 2부에서 실제 구현을 따로 다루겠습니다.

 

추가 내용 (2020.4.30)

Shadow Volume을 만들때 Convex 는 위의 Sphere 예시를 보면 문제가 없는 것 같습니다. 그런데 Вогнутый 같은 경우도 문제가 없나요?

문제 없이 잘 됩니다. 그런데 Shadow Volume이 여러개 생기는 점, 그리고 Передняя крышка과 Задняя крышка 의 모양이 서로 일치하지 않는 점이 다릅니다. 아래 그림 을 보면 передняя крышка 에서 삼각형들 의 실루엣 에지 를 사용 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 하여 만들어지고 만들어지고 edge 들을 라이트 방향 으로 확장 (extrude) 시켜 Nate Showe 의 측면 을 얻습니다.

라이트 방향을 향하는 Передняя крышка 기준으로 만든 쉐도우 볼륨 영역 2개

.하지만 передняя крышка 의 쉐도우 볼륨 1, 2 와 Back Cap 에서 의 2 개 개 볼륨 은 서로 겹치는 부분 문제 동일 하기 하기 하기 때문 에 가 가 가 가가

라이트 반대 방향 을 향 하는 삼각형 삼각형 기준 만든 쉐도우 볼륨 영역 삼각형 삼각형 기준 으로 에서 영역 는 영역, 이제 까지 설명 에서 는 는, 이제 측면 설명 에서 는 는, 측면 측면 을 설명 에서 는 는 는 측면 을 을 Передняя крышка 기준 으로 만들었기 때문 에 Nate Shadow 측면 을 다시 만들지는 않음. Задняя крышка 을 만들기 위해서 라이트 반대 반대 방향 을 향 삼각형들 의 의 의 의 의 의 (확장) выдавливание 시켜 (확장) Передняя часть 와 Задняя крышка 의 모양이 서로 다르지만 Shadow Volume으로 만들었을 때 서로 겹쳐지는 영역(픽셀들)이 같으므로 이 이 이 이 이 이 이 이 같으므로 이.

 

Патентная заявка США на систему STENCIL MAPPED SHADOWING SYSTEM UTILIZING GPU (заявка № 20180308279, выданная 25 октября 2018 г.)

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ДЕЛА

Настоящая заявка является продолжением заявки сер.№ 14/479,336, поданная 16 января 2014 г. и озаглавленная «Система затенения с трафаретным отображением», которая настоящим включена посредством ссылки.

ОБЛАСТЬ ИЗОБРЕТЕНИЯ

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

УРОВЕНЬ ТЕХНИКИ ИЗОБРЕТЕНИЯ

Трассировка лучей представляет собой метод создания изображений путем имитации поведения света в трехмерной сцене путем типичного отслеживания световых лучей от камеры в сцену, как показано на фиг. 1А. Обычно используются два типа лучей. Луч, идущий от экрана или глаза зрителя (он же точка зрения), называется первичным лучом. Трассировка и обработка первичного луча называется съемкой первичного луча или просто съемкой луча. Если первичный луч попадает на объект, в первичной точке пересечения свет может отражаться от поверхности объекта. Мы называем эти лучи вторичными лучами. Первичные лучи прослеживаются из определенной точки на плоскости изображения камеры (пикселя) в сцену до тех пор, пока они не достигнут поверхности в так называемой точке попадания или первичной точке пересечения.Теневые лучи и вторичные лучи отслеживаются от точки попадания, чтобы определить, как она освещена. Источник теневого луча находится на поверхности объекта и направлен к источникам света. Если луч попадает на какой-либо объект до того, как достигнет любого источника света, точка, расположенная в начале луча, находится в тени и должна быть окрашена в темный цвет. Обработка теневого луча называется затенением. Наконец, чтобы определить, как выглядит материал поверхности, поиск текстуры и расчеты затенения выполняются в точке попадания или рядом с ней.ИНЖИР. 1В показана сцена с тремя объектами и одним источником света. Три поколения луча создаются, когда первичный луч порождает другие лучи (нормаль к поверхности N’, отраженный луч R’, теневой луч L’, прошедший (преломленный) луч T’).

Трассировка лучей — алгоритм, требующий значительных вычислительных ресурсов. К счастью, трассировку лучей довольно легко распараллелить. Вклад каждого луча в конечное изображение можно вычислить независимо от других лучей. По этой причине было приложено много усилий, чтобы найти наилучшую параллельную декомпозицию для трассировки лучей.В предшествующем уровне техники существует два основных подхода к параллельной трассировке лучей: (i) параллельная трассировка лучей, при которой лучи распределяются между параллельными процессорами, в то время как каждый процессор полностью трассирует луч, и (ii) параллельная трассировка данных, т. е. в котором сцена распределяется между несколькими процессорами, а луч обрабатывается несколькими процессорами подряд.

Параллельная реализация трассировки лучей просто реплицирует все данные с каждым процессором и разделяет экран на несколько непересекающихся областей.Затем каждый процессор визуализирует ряд областей, используя неизменную последовательную версию алгоритма трассировки лучей, пока не будет завершено все изображение. Всякий раз, когда процессор заканчивает область, он запрашивает у главного процессора новую задачу. Это также называется подходом, ориентированным на спрос, или подразделением пространства изображения. Балансировка нагрузки достигается динамически путем отправки новых задач процессорам, которые только что стали простаивать. Однако, если необходимо визуализировать очень большие модели, данные сцены должны быть распределены по памяти, поскольку локальная память каждого процессора недостаточно велика для хранения всей сцены.Затем подход, основанный на спросе, страдает от массового копирования и умножения геометрических данных.

Data-parallel — это другой подход к рендерингу сцен, которые не помещаются в память одного процессора. Здесь данные объекта распределяются по процессорам. Каждый процессор владеет только подмножеством базы данных и отслеживает лучи только тогда, когда они проходят через его собственное подпространство. Его высокая локальность данных исключает массовое перемещение данных, отвечая потребностям очень больших моделей. Однако стоимость рендеринга за луч и количество лучей, проходящих через каждое подмножество базы данных, вероятно, будут различаться (например,г. горячие точки вызваны точками обзора и источниками света), что приводит к серьезному дисбалансу нагрузки, проблеме, которую трудно решить как со статическими, так и с динамическими схемами балансировки нагрузки. Таким образом, эффективность таких систем обычно низка.

Чтобы максимально использовать локальность между доступами к данным, обычно используется некоторое пространственное подразделение, чтобы решить, какие части сцены хранятся в каком процессоре. В простейшей форме данные распределяются согласно равномерному распределению.Каждый процессор будет содержать один или несколько вокселей одинакового размера. Наличие всего одного вокселя на процессор позволяет красиво отображать декомпозицию данных на топологию трехмерной сетки. Однако, поскольку количество объектов может значительно различаться от вокселя к вокселю, стоимость трассировки луча через каждый из этих вокселей будет различаться, и поэтому такой подход может привести к серьезному дисбалансу нагрузки.

Способ распределения данных по процессорам сильно влияет на производительность системы. Чем более равномерна рабочая нагрузка, связанная с конкретным распределением данных, тем меньше времени простоя следует ожидать.Необходимо соблюдать три основных критерия, чтобы такие распределения приводили к эффективному выполнению параллельного алгоритма (Салмон и Голдсмит): (i) Накладные расходы памяти для каждого процессора должны быть как можно равными. (ii) Требования к связи во время рендеринга должны быть сведены к минимуму. (iii) Время обработки для каждого процессора должно быть уравновешено.

Генерация распределений данных, которые соответствуют всем трем критериям, является сложной проблемой, которая остается нерешенной в предшествующем уровне техники. Большинство распределений данных ограничиваются выравниванием накладных расходов памяти для каждого процессора.Это относительно простое упражнение, потому что создание адаптивного пространственного подразделения, такого как октодерево или KD-дерево, дает достаточно подсказок относительно того, какие области пространства содержат сколько объектов.

Еще одна проблема трассировки лучей — высокая стоимость обработки ускоряющих структур. Для каждого кадра система рендеринга должна найти точки пересечения множества лучей и множества полигонов. Стоимость тестирования каждого луча относительно каждого полигона непомерно высока, поэтому такие системы обычно используют ускоряющие структуры (такие как Octree, KD-дерево, другие бинарные деревья, ограничивающие прямоугольники и т. д.).), чтобы уменьшить количество тестов на пересечение лучей и многоугольников, которые необходимо выполнить. Поскольку данные сортируются в пространстве с помощью структуры ускорения, распределение данных по процессорам также основано на этой структуре. Пространственное подразделение также используется для определения того, какие данные необходимо получать от других процессоров. Кроме того, построение оптимизированных структур является дорогостоящим и не позволяет перестраивать ускоряющую структуру каждый кадр для поддержки интерактивной трассировки лучей больших динамических сцен.Время построения больших сцен очень велико и не допускает динамических изменений.

В предшествующем уровне техники предпринимались попытки снизить стоимость и сложность структур ускорения за счет использования их простейшей формы, в которой данные распределяются равномерно. Каждый процессор будет содержать один или несколько вокселей одинакового размера. Наличие всего одного вокселя на процессор позволяет красиво отображать декомпозицию данных на топологию трехмерной сетки. Однако, поскольку количество объектов может значительно различаться от вокселя к вокселю, стоимость трассировки луча через каждый из этих вокселей будет различаться, и поэтому такой подход приводит к серьезному дисбалансу нагрузки, и, следовательно, от равномерного распределения отказываются.

На сегодняшний день наиболее популярной структурой данных предшествующего уровня техники является KD-дерево. Обход лучей в KD-дереве особенно эффективен для сцен с неравномерным распределением объектов. Массивный обход ускоряющих структур на основе KD-дерева обычно занимает большую часть времени кадра. Тесты пересечения луча и объекта предшествующего уровня техники считаются самой сложной частью трассировки лучей из-за обширного обхода ускоряющих структур данных и массивного доступа к памяти.Таким образом, в данной области техники существует большая потребность в разработке метода улучшенной балансировки нагрузки, сокращения количества обходов, основанного на простой структуре данных, и уменьшения количества проверок пересечения.

Основной причиной вычислительной нагрузки трассировки лучей является необходимость проверки пересечения между миллионами лучей и миллионами объектов. Тесты пересечения имеют высокую вычислительную сложность и связаны с передачей больших объемов данных. Технологии трассировки лучей предшествующего уровня техники сосредоточены на ускорении этих тестов и снижении стоимости пересечений.Помимо снижения производительности, перекрестные тесты сильно влияют на энергопотребление. Высокое энергопотребление трассировки лучей предшествующего уровня техники препятствует применению этой технологии на портативных устройствах, таких как ноутбуки, планшеты, смартфоны и т. д., которые питаются от батареи.

РЕЗЮМЕ

Затенение предшествующего уровня техники, основанное на огромных ускоряющих конструкциях, страдает от высокой стоимости строительства и обхода таких сооружений, а также от миллионов дорогостоящих испытаний пересечений.Наше затенение, основанное на трафаретах, исключает использование ускоряющих структур и отсекает большую часть перекрестных тестов. Сцена состоит из однородной сетки ячеек. Соответствующая часть данных сцены, критичная для затенения всех видимых точек пересечения в ячейке, регистрируется в локальной карте шаблона как объемные данные. За счет этих трафаретов достигается полная локальность обработки и локальность данных в каждой ячейке.

Наш метод трассировки лучей эффективно применяется к готовым архитектурам, таким как многоядерные чипы ЦП со встроенными графическими процессорами или без них, дискретные графические процессоры, параллельные системы с распределенной памятью, параллельные системы с общей памятью, сети дискретных ЦП, компьютеры уровня ПК. , компьютеры с информационными серверами, компьютеры с облачными серверами, ноутбуки, портативные системы обработки данных, планшеты, смартфоны и, по сути, любые вычислительные машины.Нет необходимости в специальном оборудовании.

Приведенная выше сводка не является исчерпывающей. Изобретение включает в себя все системы и способы, которые могут быть реализованы на практике, из всех подходящих комбинаций и производных его различных аспектов, обобщенных выше, а также тех, которые раскрыты в подробном описании ниже и конкретно указаны в формуле изобретения, поданной вместе с заявкой. Такие комбинации обладают особыми преимуществами, не указанными конкретно в приведенном выше описании.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Изобретение описано в виде неограничивающих примеров со ссылками на прилагаемые фигуры и чертежи, на которых одинаковые обозначения обозначают одинаковые элементы.Принимая во внимание, что эти чертежи предоставляют только информацию, касающуюся типичных вариантов осуществления, и поэтому не должны рассматриваться как ограничивающие объем:

РИС. 1А. Предшествующий уровень техники. На рисунке показана настройка сцены с трассировкой лучей, включая точку обзора, изображение и объект сцены. Лучи отражения, преломления и тени создаются из точки пересечения основного луча и объекта сцены.

РИС. 1Б. Предшествующий уровень техники. Показана другая установка луча, путешествующего по сцене, с тремя объектами и одним источником света.Три поколения лучей создаются, когда первичный луч порождает другие лучи. Термины включают нормаль к поверхности N’, отраженный луч R’, теневой луч L’, прошедший (преломленный) луч T’.

РИС. 2. Один трафаретный фрагмент трафаретной карты, кэширующий объекты, блокирующие свет.

РИС. 3А. Карта глубины предшествующего уровня техники. Статус тени видимых точек пересечения составляется на основе только известных значений глубины, которые регистрируются в DF 1 и DF 2 . В результате теневой статус HIP, основанный на этих значениях, ошибочно интерпретируется как «теневой».

РИС. 3Б. Трафаретная карта. Статус тени HIP рассчитывается на основе полной информации обо всех возможных мешающих объектах. Список объектов зарегистрирован по SF 1 и SF 2 . Как правило, теневой статус HIP всегда описывается правильно.

РИС. 4А. Настройка точки попадания (HIP), источника света, объектов и трафаретной карты.

РИС. 4Б. Статус тени видимой точки пересечения можно интерпретировать по окружающим ее фрагментам трафарета.

РИС. 5А. Схема случая, в которой HIP обнаружен затененным, без теста на пересечение

Фиг. 5Б. Схема случая, в которой обнаружен HIP без тени, без теста на пересечение

Фиг. 5С. Настройка случая, в которой требуется проверка пересечения.

РИС. 6А. Сетап из трех HIP, объектов сцены и двух фрагментов трафарета.

РИС. 6Б. HIP без тени, нет необходимости проводить тест пересечения.

РИС. 6С. Затененный HIP, требуется проверка пересечения.

РИС.6Д. Затененный HIP, без теста на пересечение.

РИС. 7А. Неоднозначный случай. Не затененный. Нужен перекрестный тест.

РИС. 7Б. Аналогичный неоднозначный случай. Затененный. Нужен перекрестный тест.

РИС. 8. Мелкие объекты, которые имеют тенденцию исчезать с трафаретной карты из-за неправильного разрешения.

РИС. 9. Блок-схема алгоритма трафаретного затенения.

РИС. 10. Блок-схема многопроцессорной архитектуры с общей памятью и общими кэшами.

РИС.11. Многоядерная архитектура предшествующего уровня техники.

РИС. 12. Схематическое описание многоядерной реализации.

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

Затенение при трассировке лучей затруднено из-за необходимости обрабатывать каждую точку попадания (HIP) несколько раз в зависимости от количества источников света в сцене. Затенение предшествующего уровня техники, основанное на огромных ускоряющих сооружениях, страдает от высоких затрат на строительство и перемещение этих сооружений, а также на множество дорогостоящих проверок пересечения.Наше затенение, основанное на шаблонах, не использует структуры ускорения и отсекает большинство тестов пересечения. Сцена состоит из однородной сетки ячеек. Соответствующая часть данных сцены, необходимая для затенения всех видимых точек пересечения в ячейке, кэшируется в локальной карте трафарета. Благодаря этим трафаретам достигается полная локальность обработки и локальность данных в каждой ячейке.

Затенение в соответствии с настоящим изобретением характеризуется двумя преимуществами: (i) резко сокращается количество тестов на пересечение и (ii) трассировка луча больше не является последовательной, а безразлична к любому порядку.Усиление локальности основано на предоставлении локально в ячейке всей информации о потенциально мешающих объектах, между ячейкой и источником света (ИС). Эта информация, сохраненная один раз в растровом трафарете, заменяет несколько точек доступа от HIP к LS. Трафарет компилируется на этапе предварительной обработки. Он хранится локально в ячейке, легко и независимо доступным для назначенного процессора. Затем решение о затенении для каждой точки попадания (HIP) принимается локально, сверяясь с трафаретом.

Мы определяем трафарет в процессах, связанных с 3D (таких как трассировка лучей), как средство для кэширования релевантной части информации в ячейке, извлеченной из глобальных данных (например, данных сцены), или, альтернативно, кэширования релевантной для ячейки информации в другом месте. , в прямой доступ к каждой ячейке. В результате обработка в ячейке становится полностью локальной, независимой от других ячеек и свободной от ограничений рабочего порядка между ячейками, что в значительной степени способствует хорошо сбалансированной параллельной обработке.

Для затенения информация, извлекаемая из данных сцены и сохраняемая в трафаретах, представляет собой загораживающие объекты, блокирующие свет между источником света и ячейкой. Следовательно, кэшированная информация трафарета должна быть связана с данными перекрытия.

Использование трафаретов для затенения ВИП, созданных первичной съемочной площадкой, основано на локально хранимой информации о данных между ВИП и источником света (ИС). Эти данные, включающие в себя все объекты-кандидаты для отбрасывания тени на HIP, хранятся в виде трафаретной карты.

Карта трафарета, определенная здесь, принципиально отличается от карты глубины предшествующего уровня техники. В растровой 3D-графике карта глубины — это изображение, содержащее информацию о расстоянии до ближайшей поверхности объектов сцены, просматриваемых с точки обзора. Этот термин связан и может быть аналогичен буферу глубины, Z-буферу, Z-буферизации и Z-глубине. «Z» в этих последних терминах относится к соглашению, что центральная ось обзора камеры находится в направлении оси Z камеры, а не к абсолютной оси Z сцены.Карты глубины, используемые в картировании теней для создания теней, отбрасываемых освещением, рассчитываются с точки зрения источников света, фиксируя первую видимую поверхность. Они не могут передать несколько расстояний, если они находятся в поле зрения одного пикселя.

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

РИС. 2 иллюстрирует концепцию регистрации объемных данных в трафаретной карте. Показан один фрагмент трафарета (SF) карты. Из всех объектов сцены существует соответствующее подмножество, требующее решения для затенения: объекты, которые перехватывают освещающий луч на всем пути от источника света (LS) до SF. Показаны два перехватывающих объекта, O 1 и O 2 .Они прерывают луч в точках поверхности глубиной D 1 и D 2 соответственно. Как правило, эта информация прописывается во фрагменте как

    • SF (u, v): B, O 1 , D 1 . . . О н , Д н .
      U, v — координаты фрагмента в системе координат источника света (или, как вариант, в системе координат сцены). B обозначает коэффициент блокировки света, B=0 для незатененного фрагмента и B=0 для затененного фрагмента.O — идентификатор объекта, который может быть записан индексами, для экономии памяти или полностью. D — точка попадания луча на поверхность объекта по расстоянию от LS. В проиллюстрированном случае кэшированные данные: SF 1 (u 1 , v 1 ): 1, O 1 , D 1 , O 2 , D
      2 90 фрагмент затенен, а два объекта O 1 и O 2 блокируют свет на расстояниях D 1 и D 2 соответственно.

РИС. 3A и 3B иллюстрируют разницу между нашим трафаретом и картой глубины предшествующего уровня техники, что касается создания теней при трассировке лучей. ИНЖИР. 3A показывает попытку использовать карту глубины предшествующего уровня техники для затенения HIP. Статус тени HIP составляется на основе значений глубины, зарегистрированных во фрагментах глубины DF 1 и DF 2 карты глубины. Значения, зарегистрированные во фрагменте глубины (DF), представляют собой координаты фрагмента и глубину D первой поверхности, видимой из источника света: DF (u 1 , v 1 ): D. В этом примере HIP должен быть действительно освещен, но из-за отсутствия объемной информации о том, что фрагменты затенены двумя разными объектами O 1 и O 2 , HIP будет ошибочно принят за «затененный». Это случай неопределенности, но карта глубины на основе поверхности, используемая для затенения, не чувствительна к таким неопределенностям, что запрещает использование карт глубины в затенении с трассировкой лучей. ИНЖИР. 3B показывает объемную трафаретную карту. Теневые трафареты генерируются на этапе предварительной обработки перед выполнением затенения.Теневой трафарет увеличивает видимость объектов, как они видны из источника света (LS). Эти данные о видимости регистрируются как растр фрагментов. Объемная информация, записанная во фрагментах трафарета SF 1 и SF 2 во время предварительной обработки, используется для затенения HIP во время выполнения. Информация SF включает в себя координаты фрагмента и список всех загораживающих объектов на пути от HIP до LS. В этом случае необходимо определить затененный статус HIP в отношении двух разных объектов, что видно из окружающих SF.Следовательно, в этом примерном случае два теста пересечения с O 1 и O 2 выявят тот факт, что HIP не затенен. В общем случае возникает случай неопределенности, когда фрагменты трафарета, окружающие точку попадания, затенены разными объектами, поэтому ГИП может быть либо затенен одним из этих объектов, либо может попасть между ними, освещенный ЛС. С помощью объемных трафаретных карт и последующих тестов пересечения можно всегда точно и правильно определить статус затенения HIP.Эти тесты пересечения сосредоточены на конкретном объекте, а не на тестировании нескольких объектов на пути к объекту. Тесты пересечения не нужны, когда все затененные SF, окружающие HIP, включают один и тот же объект или все SF не затенены.

Вся необходимая объемная информация становится доступной локально. Когда фрагменты организованы в ячейки, каждая ячейка является автономной обрабатывающей единицей, содержащей все данные, необходимые для локальной обработки. Ячейка становится независимой от других ячеек, а также свободной от порядка обработки.В целом сборка автономных ячеек создает улучшенную среду для распределенной параллельной обработки. Следует отметить, что в отличие от известного уровня техники, где необходимо проводить дорогостоящие обходы внешних ускоряющих структур в поисках объектов-кандидатов для проверки пересечения, здесь все объекты-кандидаты локально заданы в SF. Наш метод трафаретной карты исключает необходимость в дорогостоящих ускоряющих структурах.

РИС. 4А иллюстрирует окружение трафарета. Мы предполагаем, что точка попадания (HIP) была создана либо первичным этапом съемки как одна из видимых камерой точек объекта (Объект. 3 ), или на этапе вторичной трассировки лучей. Первичная съемка может быть выполнена либо с помощью рендеринга построчной развертки (с использованием Z-буферизации), либо с помощью трассировки лучей. Рендеринг Scanline быстрее, чем трассировка лучей. Для простоты мы называем их HIP в целом. Созданные HIP необходимо дополнительно обработать для затенения. Источник света (LS) может быть заблокирован одним из потенциально мешающих объектов, Obj. 1 и Обь. 2 . Решение о затенении принимается на основе информации, содержащейся во фрагментах трафарета, окружающих HIP:

    • 1.Состояние подсветки фрагмента трафарета. Например. «0» для освещенного, «1» для затененного
    • 2. Список всех блокирующих объектов между ЛС и фрагментом
    • 3. Точка попадания на поверхность (расстояние от ЛС) для каждого блокирующего объекта
      Фрагмент может быть либо освещается или затемняется. Он содержит список всех объектов, мешающих на пути к LS. Четыре фрагмента трафарета, окружающие HIP, как показано на фиг. 4В, содержат всю соответствующую информацию, необходимую для определения статуса дублирования HIP.Эти соседние фрагменты трафарета выбираются в соответствии с их u, v близостью к HIP, а статус затенения (затененный, не затененный) HIP устанавливается в соответствии со статусом освещения окружающих фрагментов и относительной глубиной кэшированных объектов фрагментов. В данном примере три SF затенены, а один освещен. Далее будет объяснен способ анализа затенения HIP. В случае, если приведенной выше информации недостаточно для окончательного ответа и результат не определен, необходимо провести тесты на пересечение с объектами-кандидатами.

На фиг. 5А, 5В и 5С. Верхняя часть фиг. 5A показаны HIP, источник света (LS), блокирующий объект O 1 и соседние фрагменты трафарета (SF). Нижняя часть показывает HIP и четыре соседних SF, все они кэшируют один и тот же объект O 1 . Таким образом, решение для теневого копирования для HIP является простым; его затеняет O 1 . Перекресток не нужен. Разрешение трафаретной карты должно быть близко к разрешению изображения, чтобы самый маленький объект не мог исчезнуть между соседними фрагментами трафарета.Это верно и в случае фиг. 5Б. Настройка как и раньше, но без блокирующих объектов. При правильном разрешении трафаретной карты пустой список объектов во всех SF можно интерпретировать как незатененный HIP. Это тривиальный случай, в котором нет необходимости исследовать объекты в SF. В этом случае пересечение также не требуется. В отличие от последних двух случаев, на фиг. 5C описывает случай, требующий проверки пересечения. Два из ЗФ заблокированы мешающими объектами, а два других свободны.Таким образом, статус затенения HIP неясен, и единственным решением является выполнение теста пересечения с объектом O 1 .

Несколько SP, расположенных между одними и теми же четырьмя SF, но имеющих разные значения глубины, могут давать разные результаты затенения. Это показано на фиг. 6A-6D, для трех разных HIP. На фиг. 6A показан набор из трех HIP разной глубины. Все три расположены между одними и теми же двумя (вместо 4 для простоты) СФ. ИНЖИР.6B относится к HIP 1 . Ни один из объектов SF не имеет меньшего значения глубины, чем HIP 1 , что означает, что HIP 1 должен быть освещен. Это нетривиальный вывод, так как он основан на проверке всех объектов, кэшированных в SF 1 и SF 2 . Однако тест на пересечение исключается. ИНЖИР. 6C, относящаяся к HIP 2 , показывает, что два объекта, кэшированные в SF 1 , имеют меньшую глубину, чем SP 1 , в то время как в SF 2 нет зарегистрированных объектов.HIP 1 может быть заблокирован или не заблокирован одним или несколькими объектами SF 1 . Поэтому требуется перекрестный тест. Третий HIP, показанный на фиг. 6D, заблокирован объектом O 3 , повторяющимся в обеих SF и имеющим меньшее значение глубины, а это означает, что SIF 3 затенен O 3 . Это тоже нетривиальный вывод, так как он основан на изучении объектов, кэшированных в SF 1 и SF 2 . Проверка пересечения не требуется.

Два интересных случая, требующих проверки пересечения, показаны на РИС. 7А и 7В. В обоих случаях есть один объект, который находится частично выше и частично ниже HIP. На фиг. 7A HIP остается незатененным, тогда как на фиг. 7В заштрихован. В таком случае решение может быть найдено только методом пересечения.

При трассировке лучей разрешение изображения на экране преобразуется в пространственное разрешение съемки в пространстве сцены. Это пространственное разрешение варьируется от ячейки к ячейке в зависимости от расстояния ячейки от экрана.С другой стороны, разрешение трафаретной карты зависит от расстояния ячейки от источника света. Между этими двумя резолюциями нет естественной связи. Однако, если разрешение трафаретной карты ячейки слишком низкое, SF будут иметь недостаточную объемную информацию для SIF, что приведет к неправильному затенению. Если разрешение СФ значительно ниже разрешения падающих лучей, то информация об объекте имеет тенденцию к исчезновению. Это может стать очевидным из примера на фиг. 8, где разрешение трафарета составляет примерно ½ разрешения съемки.HIP находится среди незатененных SF. Мелкие объекты имеют тенденцию исчезать с трафарета, несмотря на то, что они видны лучам света. Объект 81 виден с камеры, но невидим от источника света, поэтому необходимо провести тест пересечения. С другой стороны, при правильном разрешении этот случай становится тривиальным, без проверок на пересечение и даже без изучения регистратора СФ. К сожалению, достаточно часто встречается случай, когда все соседние SF не затенены.Следовательно, предпочтительный вариант осуществления включает согласование разрешения трафарета в каждой ячейке с разрешением съемки. Тем не менее, возможен другой вариант, который потребовал бы единой карты шаблона для всех ячеек, менее затратного с точки зрения генерации шаблона, но за счет менее эффективного алгоритма затенения во время выполнения.

Блок-схема теневого копирования в ячейке представлена ​​на фиг. 9. Трафаретная карта генерируется из LS с разрешением, адаптированным к разрешению съемки 930 .В случае данных сцены на основе треугольников предпочтительным способом создания карты трафарета является графический конвейер графического процессора с модифицированным кодом шейдера. Входными данными для этой задачи будет база данных треугольников сцены между LS и ячейкой. На следующем этапе 901 HIP берется для затенения. Сначала 902 выполняется тест для простейшего случая незаштрихованных окружающих SF путем проверки теневого бита B в каждом SF. Если тест дает положительный результат, HIP помечается как «незатененный» 919 , и берется следующий HIP.В противном случае 903 выполняется попытка согласования объекта. Если соседние HIP, один или несколько, уже были обработаны в поисках затеняющего объекта, существует большая вероятность того, что текущий HIP также заблокирован тем же объектом. Следовательно, тестирование этого объекта в первую очередь может сэкономить время на тестирование нескольких объектов в окружающих SF. Каждый HIP, который был сделан для затенения и признан затененным, сохраняет идентификатор «блокирующего объекта» в качестве параметра. Затем считывается «блокирующий объект» одного или нескольких HIP 905 и его глубина (расстояние от LS) сравнивается с текущей глубиной HIP 906 . Если результат сравнения отрицательный, процесс возвращается в основной поток. Если положительный, идентификатор объекта ищется в окружающих SF 907 . Текущий HIP определенно затенен, только если идентификатор этого объекта найден во всех окружающих SF 908 , тогда идентификатор сохраняется в реестре HIP 909 , а HIP помечается как «затененный» 910 , и следующий HIP берется.

Если во всех случаях когерентность не удалась, берется основной поток, 911 914 , где сравнивается глубина кэширования объектов всех 4 SF с текущим HIP.Если во всех SF 915 найден общий объект, имеющий меньшую или равную глубину, идентификатор этого объекта сохраняется в реестре HIP, а HIP помечается как «затененный». В противном случае, если такой объект не найден, необходимо провести тест на пересечение со всеми объектами меньшей глубины 917 . Если пересечение было найдено, идентификатор пересекаемого объекта сохраняется, а HIP помечается как «затененный». Когда тесты пересечения не пройдены, HIP помечается как «не затененный» 919 , и берется следующий HIP.

Сравнение производительности: трафареты и трафареты. Известный уровень техники

Наш анализ производительности основан на модели, разработанной Властимилом Хавраном (Эвристические алгоритмы съемки лучей, Чешский технический университет, Прага, 2000, стр. 24).

TR=(NTS*CTS+NIT*CIT)*Nrays+Tapp=(стоимостьпрохода+стоимостьпересечения)*Nrays+Tapp

    • NTS Среднее количество подключенных узлов на луч
    • C TS Средняя стоимость шага обхода между узлами (включая доступ к памяти)
    • N IT Среднее количество тестов пересечения луч-объект на луч
    • C IT Средняя стоимость теста пересечения
    • T приложение Оставшиеся вычисления (одинаковые для всех алгоритмов)
      Модель производительности разделяет стоимость обхода луча и стоимость проверки пересечения. Последний элемент T app состоит из затенения и других оставшихся вычислений. Поскольку он одинаков для всех алгоритмов, он не является частью нашего сравнения производительности.

Модель Хаврана сначала применяется к известному алгоритму, а затем модифицируется и применяется к нашему алгоритму на основе шаблона. Предполагается следующая система трассировки лучей:

    • Сцена разбита на сетку 43 3 , имеющую в общей сложности 79 507 однородных ячеек.
    • Данные сцены содержат 1 280 000 треугольников с равномерным распределением 10 треугольников на ячейку.
    • Количество стреляющих лучей 4 000 000.
    • Рассматривается один источник света.
    • В затенении предшествующего уровня техники используется глобальное KD-дерево, и каждая ячейка далее подразделяется на сетку из 2 3 подъячеек, которые должны решаться с помощью небольшого локального KD-дерева.
    • C TS =0,3 шага обхода для большого глобального KD-дерева (по Хаврану)
    • C TS _ локальное =0.1 шаг обхода для небольшого локального KD-дерева (аппроксимация)
    • C IT =0,7 (по Хаврану).
    • N IT =2, в среднем два теста пересечения на ячейку.
    • 50% лучей попадают на объекты. Каждый попадающий луч генерирует одну точку пересечения стрельбы (SIP). Следовательно, количество снимаемых точек пересечения #SIP=2 000 000. Точки пересечения отражающихся лучей не предполагаются.
    • Мы предполагаем, что 50% #SIP затенены.
    • Среднее расстояние между СИП и источником света составляет 34 клетки.Следовательно, среднее количество пройденных ячеек/узлов перед определением попадания составляет: N TSG попадание = 17 ячеек. В случае отсутствия попадания N TSG отсутствие попадания =34 клетки.
    • На пути из 34 или 17 ячеек в среднем делается 2 теста на локальное пересечение на ячейку. N IT =2.
    • Среднее количество подключенных локальных узлов: N TSL =6

Производительность теневого копирования предшествующего уровня техники.

Модель Хаврана применяется к затенению предшествующего уровня техники следующим образом: NTSGhit*(NTSL*CTS-local)*#SIPhit+NTSGhit*(NIT*CIT)*#SIPhit+NTSGnohit*CTS*#SIPno-hit+NTSGnohit*(NTSL*CTS- local)*#SIPno-hit+NTSGnohit*(NIT*CIT)*#SIPno-hit=#SIPhit+NTSGit(CTS+NTSL*CTS-local+NIT*CIT)+# SIP без попадания+NTSGnoпопадание(CTS+NTSL*CTS-local+NIT*CIT)Tshadow=2,000,000*17*(0.3+6*0,3+2*0,7)+2,000,000*34*(0,3+6*0,3+2*0,7)=357,000,000

Из общее время T тень , тесты пересечения занимают 142 800 000 единиц.

Производительность затенения на основе трафарета

Сначала мы модифицируем ранее использовавшуюся модель затенения, чтобы применить ее к алгоритму трафарета. Все элементы обхода KD-дерева заменяются путем проверки соседних фрагментов шаблона (SF). В основном есть 4 этапа тестирования:

    • 1.Соседний тест 1 (NT1). Все окружающие СФ анализируемого SIP проверяются на отсутствие теней. Следуя нашему предположению, что 50 % SIP освещены, мы относим 40 % всех случаев к NT1 и присваиваем этой тривиальной задаче стоимость C NT1 = 0,01.
    • 2. Смежный тест 2 (NT2). Соседние SIP проверяются на согласованность объектов. Если соседние SIP обнаруживаются затененными, сначала проверяется тот же затеняющий объект на наличие препятствий текущему SIP.
    • 3. Соседний тест 3 (NT3).Во всех четырех окружающих ЗФ ищется общий препятствующий объект. Присвоим оценочную стоимость C NT(2-3) =0,05 шагам 2 и 3.
    • 4. Фактическое пересечение. Наконец, если ни один из вышеперечисленных шагов не дает определенного результата, выполняется проверка пересечения с зарегистрированными объектами SF. В то время как задачи 1-3 основаны на целочисленной арифметике, пересечение — это задача с плавающей запятой. Стоимость последней задачи сравнима со стоимостью фактического пересечения тестов предшествующего уровня техники, C IT =0.7. Уравнение принимает следующий вид:

Tshadow=[NT1]no_hit+[NT1+NT(2&3)+Intersection_test]no_hit+ [NT1+NT(2&3)]хит+[NT1+NT(2&3)+Intersection_tests]хит=800,000*CNT1+200, 000*(CNT1+CNT(2–3)+34*2*CIT)+500,000*(CNT1+CNT(2–3))+500, 000*(CNT1+CNT(2-3)+17*2*CIT)=21 460 000

Результат:

В таблице 1 приведены характеристики затенения на основе трафарета по сравнению с затенением предшествующего уровня техники. Строки 3-4 таблицы рассчитаны аналитически по модели Властимила Хаврана.Они сравнивают затраты на предварительную обработку кадров и затенение. Общее время затенения на основе трафарета составляет всего 4,7% от времени предшествующего уровня техники, а тесты на пересечение составляют 7,3% времени предшествующего уровня техники.

Во второй строке показано сокращение числа тестов на пересечение, измеренное на сцене конференции. Эта сцена используется в качестве эталона многими исследователями трассировки лучей. Сравнение проводилось с популярным трассировщиком лучей Blender. Оба запускались на одном процессоре.

ТАБЛИЦА 1Предшествующий уровень техникиЗатенение на основе трафарета (Blender)Advantage Тесты общего пересечения100%7.3% x 13,7 Предварительная обработка кадров 42M  4MX 10,5(расчетно аналитически*)Стоимость затенения (расчетно аналитически)Проходы12M0X 21,5Интерсек. test30M1.95M

Варианты реализации

Наш алгоритм, основанный на трафарете, может быть эффективно реализован на однопроцессорных системах, а также на многопроцессорных системах, процессорах общего назначения, процессорах специального назначения, многоядерных процессорах и графических процессорах. Эти процессоры могут быть интегрированы в различные вычислительные системы, такие как однопроцессорные вычислительные системы, параллельные компьютеры, компьютеры уровня ПК, компьютеры с информационными серверами, компьютеры с облачными серверами, ноутбуки, портативные системы обработки, планшеты, смартфоны и другие компьютерные машины.Хотя последовательная вычислительная система способна выполнять наш алгоритм затенения, параллельная вычислительная система может выполнять это для более крупных моделей. Сегодня типичная классификация по размеру модели включает небольшие модели, содержащие до нескольких сотен полигонов, средние модели, содержащие до нескольких миллионов полигонов, и большие модели, содержащие до миллиардов полигонов. Благодаря улучшенной балансировке нагрузки масштабируемость производительности зависит от количества задействованных процессоров. Несколько процессоров параллельной системы могут совместно использовать одну «общую» память, как правило, для малых или средних моделей, когда модель находится в одной памяти, совместно используемой всеми процессорами. Для больших моделей несколько процессоров параллельной системы предпочтительнее иметь частную память, так называемые параллельные вычислительные системы с распределенной памятью, когда большая модель распределяется по памяти, и каждый процессор имеет единоличный доступ к своей частной памяти. Примерное схематическое описание параллельной системы с общей памятью, способной эффективно выполнять наш алгоритм на основе шаблона, изображено на фиг. 10. Имеется четыре процессора, четыре общих кэша, два графических процессора и одна общая память.Предпочтительно, чтобы графический процессор можно было использовать для создания трафаретных карт благодаря встроенной эффективности графического конвейера для обработки потока полигонов. HIP могут генерироваться ЦП, ГП или различными способами совместной обработки между ЦП и ГП. Они могут быть результатом первичного этапа съемки, а также вторичного этапа трассировки лучей, как упоминалось выше. Каждая ячейка обрабатывается совершенно независимым образом, генерируя полностью затененные данные. При правильном проектировании системы кеш хранит все необходимые данные для активности ячейки, уменьшая возможные промахи кеша.

Коммерческие параллельные системы могут иметь преимущества более низкой стоимости и развитой среды программирования. Одной из таких систем является многоядерная архитектура Intel, т.е. СэндиБридж или АйвиБридж. SandyBridge, как показано на фиг. 11, содержит несколько ядер ЦП 1111 , несколько кэш-памяти 1113 , конвейерное графическое ядро ​​(одно или несколько) 1112 , межсоединение данных кольцевого типа 1118 , интерфейс дисплея 1115 14 экспресс-интерфейс 19 и 14 экспресс-интерфейс 14 PCI .Это параллельная система с общей памятью, без частной памяти, интегрированная посредством технологии SOC (система на кристалле) (называемой также «многоядерной»), где вся система находится на одном кристалле, а кремниевые ограничения исключают создание частной памяти на чип. Поэтому основная память 1116 является внешней по отношению к SOC и подключается через встроенный контроллер памяти IMC 1117 .

Пример эффективной реализации нашего алгоритма на основе шаблона в многоядерной системе показан на рис.12. Упрощенное схематическое описание включает четыре ядра ЦП, четыре общих кэша, два ядра графического процессора, кольцевое соединение данных и общую память. Графические процессоры можно использовать для некоторых частей нашего алгоритма на основе трафарета, например, для создания карты трафарета.

Проектные решения с конечным объемом в MOOSE

MOOSE традиционно представляет собой структуру конечных элементов (FE). Он построен на основе библиотеки libMesh FE и использует ее преимущества. Традиционно метод конечных объемов (FV) на самом деле не имеет функций формы для описания непрерывных решений в ячейках сетки.Вместо этого он использует постоянное решение в каждом элементе/ячейке сетки. Из-за этого большая часть использования MOOSE libMesh для FE не имеет отношения к FV. В этом документе дается обзор того, чем FV похож и чем отличается от FE в отношении реализации в MOOSE, и объясняется, почему FV разработан и реализован в его текущей форме. Чтобы в полной мере использовать преимущества производительности и упростить реализацию метода FV в MOOSE, наряду с инфраструктурой MOOSE FE был создан новый набор систем, специфичных для FV.Поскольку новый набор систем, создаваемых после того, как MOOSE получил мощную поддержку автоматической дифференциации (AD), системы FV (по крайней мере, изначально) создаются только с учетом поддержки AD, а версии без AD (ручной якобиан) будут только поддержку, если возникнет острая необходимость.

Переменные

Классы переменных, специфичных для FV (зависимых), были созданы наряду со специфическими для FE классами, имеющими общую базовую функциональность. Это отвечает за вычисление и предоставление значений решения ячейки/грани FV объектам, которые в них нуждаются. Реконструкция более высокого порядка также будет внедрена сюда в конечном итоге. Ячейки-призраки для граничных условий и других важных функций обрабатываются автоматически на этом уровне, поэтому код ядра и граничных условий может быть написан почти так же, как эквиваленты FE.

Ранее в иерархии классов переменных не было промежуточного класса, зависящего от переменной поля. Переменные FV, однако, являются полевыми переменными, которые необходимо включать в некоторые операции с полевыми переменными, выполняемые в MOOSE.Раньше это было невозможно, потому что переменные FV должны были бы совместно использовать весь свой интерфейс/API с переменными FE, что было бы плохим выбором из-за большого количества непересекающихся потребностей API между ними (например, никакие функции, связанные с формами и тестовыми функциями, не поддерживаются). необходимо для переменных FV). Таким образом, в иерархию классов переменных был введен новый промежуточный класс переменных полей, чтобы облегчить надлежащее разделение API, позволяя выполнять общие операции со всеми переменными полей.

FV Kernels

Flux Kernels:

Метод FV использует теорему Гаусса о дивергенции для преобразования объемных интегралов с оператором дивергенции в поверхностные интегралы, представляющие потоки различных величин через грани между ячейками сетки. В отличие от ядер FE, функция проверки/взвешивания не требуется. Связь между ячейками возникает из этого численного расчета потока на грани, вносящего вклад в ячейки сетки по обе стороны от нее (с противоположным знаком направления). Расчет этих числовых потоков требует доступа к переменным значениям и свойствам с обеих сторон каждой грани.Ядра КЭ, с другой стороны, требуют только одного набора объемных/элементарных значений для интересующей ячейки. Ядра FV также должны иметь дело с такими вещами, как нормальные векторы граней, поправочные коэффициенты перекрестной диффузии для неортогональных сеток и т. д. Все эти различия делают непрактичной и беспорядочной попытку интегрировать их в одну и ту же систему ядра MOOSE и побудили решение о создании отдельной системы ядра FV.

Elemental Kernels:

В методе FV есть некоторые основанные на элементах расчеты на основе исходных и временных условий, которые просто обрабатываются/вызываются через обычные элементарные невязки КЭ и циклы якобианской сетки.Ядра производных по времени и исходные термины попадают в эту категорию.

Функции формы и интеграция

Поскольку некоторые основные аспекты FV «проще», чем FE, существует возможность работать с меньшими вычислительными затратами на элемент, чем с методом FE. Реализация FV делает следующее иначе, чем FE:

* пропускает инициализацию/хранение структур данных шейп-функции ) можно использовать напрямую.FV требуется только одно значение на ячейку.

* пропускает подпрограммы/циклы интеграции элементов, которые не нужны для решения FV с постоянными ячейками.

Для полного использования этих и других возможностей потребуется значительная работа, и можно ожидать, что производительность FV со временем улучшится. Некоторые понятия квадратурных точек были сохранены для FV в MOOSE. Это позволяет в будущем расширяться до представлений переменных решений ячеек более высокого порядка в дополнение к сохранению сходства API для пользователей, уже знакомых с другими объектами и системами MOOSE.

Зацикливание граней

Значительные части метода FV естественно ориентированы на клеточные грани. libMesh не предоставляет средств для циклического просмотра лиц и работы с ними. Структуры данных, специфичные для FV, были созданы для упрощения цикла по граням сетки для вычисления остаточных вкладов числовых потоков.

Вдоль существующего элемента, узла и т. д. контуров, используемых для КЭ, был реализован торцевой контур. Это используется для расчета численных вкладов потока от ядер FV и граничных условий.Метаданные информации о лице, необходимые для FV, собираются заранее (и пересчитываются при каждом изменении сетки) и кэшируются в структуре данных сетки MOOSE. Потребности в отношении граничных условий Дирихле среди прочего повлияли на решение сделать структуру данных информации о лицах центром для объектов, чтобы получить соответствующую информацию для расчета остаточных вкладов — более подробное обсуждение этого делается в разделе граничных условий.

Граничные условия

Рассуждения, аналогичные решениям о системе ядра FV, также мотивировали создание отдельной системы граничных условий FV.Хотя FV поток/интегрированные граничные условия в чем-то похожи на интегрированные КЭ граничные условия, в них по-прежнему отсутствуют тестовые/весовые функции. Однако БК FV Dirichlet должны быть реализованы совершенно иначе, чем в FE, и сильно мотивируют создание отдельной системы БК FV.

Граничные условия Дирихле (BC) в методе FV не могут быть созданы путем прямого задания степеней свободы, как в методе FE, потому что степени свободы FV не существуют на границе сетки. Существуют различные подходы к решению этой проблемы в FV.Подход с призрачными элементами был выбран из-за его популярности и надежности. В этом подходе БК Дирихле реализованы как слабые БК. Для этого к граничным граням сетки применяются нормальные члены ядра потока. Поскольку ядра потока рассчитываются с использованием информации из ячеек на обеих сторонах грани, мы используем желаемое значение БК Дирихле, чтобы экстраполировать значение «фантомной» ячейки для стороны грани, которая не имеет фактической ячейки сетки. Другие необходимые свойства ячейки также отражаются/отражаются от существующей ячейки.Был выбран дизайн, который позволяет автоматически обрабатывать создание и использование элементов-призраков существующими ядрами потока для принудительного применения BC Дирихле. Эта процедура приводит к тому, что объекты Дирихле BC фактически не отвечают за расчет остаточных вкладов. Вместо этого они информируют об инициализации призрачного элемента, в то время как BC нормального потока используются для расчета граничных остаточных вкладов. Это и другие отличия послужили поводом для создания отдельной системы БК ФВ.

Многие объекты в MOOSE получают информацию о текущем местоположении сетки, напрямую обращаясь к своим собственным и унаследованным переменным-членам.Это становится несколько затруднительно для FV из-за природы призрачных элементов. Традиционно, если объекту требовался объем ячейки, он обращался к указателю элемента и использовал API-интерфейсы libMesh. Это не работает для элементов, которых не существует, но нам все равно нужно предоставить эту информацию для расчета остаточных вкладов Дирихле BC. Мы должны иметь возможность предоставлять информацию, которой не существует, и мы должны убедиться, что код не пытается получить доступ к нерелевантной или неправильной информации непосредственно из сборки, FEProblem или других классов.По этой причине, среди прочего, для объектов FV было установлено соглашение, согласно которому объекты должны извлекать необходимую информацию из объекта информации о лице, который передается, а не извлекать ссылки привязки к обычным данным, связанным с сеткой. Если все получают необходимую информацию из этого одного места, легко отслеживать, когда код может делать неправильные вещи. Также становится просто обеспечить объемы для несуществующих ячеек и добавить функции, которые требуют перехвата и изменения любых объектов информации о лицах.

Реконструкция

Градиентная реконструкция осуществляется с использованием метода Грина-Гаусса, т.е.

где — значение интересующей величины на грани, равное произведению площади поверхности на внешнюю нормаль, т. е. . Значение можно вычислить несколькими способами. Первый, который используется по умолчанию в MOOSE, использует компактный трафарет и выполняет простую линейную интерполяцию между значениями центра соседних ячеек с гранью. Второй использует расширенный шаблон на основе вершин, где номинальное значение берется как средневзвешенное значение значений вершин граней, которые, в свою очередь, берутся как средневзвешенное значение центров ячеек, соседних с точкой.Чтобы использовать метод расширенного шаблона на основе вершин, вы можете указать свой входной блок переменных конечного объема следующим образом:

  [Переменные]
  [./об]
    семья = МОНОМИАЛЬНЫЙ
    порядок = ПОСТОЯННЫЙ
    фв = правда
    начальное_условие = 1
    тип = MooseVariableFVReal
    face_interp_method = 'на основе вершин'
  [../]
[]
  
(test/tests/fvkernels/mms/grad-reconstruction/extended-cartesian.i)

На регулярных ортогональных сетках как компактный, так и расширенный шаблоны продемонстрировали сходимость второго порядка в отношении измельчения сетки. В тесте неортогональной сетки (см. компактный и расширенный входные файлы) компактный шаблон показывает сходимость второго порядка, в то время как расширенный шаблон на основе вершин снижает сходимость с половины порядка до 1,5 порядка. В тесте с перекошенной сеткой, где асимметрия вводится через неравные соседние уровни уточнения сетки, компактный шаблон сохраняет сходимость первого порядка. Кроме того, для компактного трафарета доступна коррекция асимметрии, в которой используется следующее уравнение:

, что означает, что приблизительная номинальная стоимость () на пересечении линии, соединяющей центроиды ячеек и грань (), корректируется с использованием приблизительного градиента на эта точка и вектор коррекции .Это дает сходимость второго порядка на скошенных сетках, где компактный шаблон возвращается к первому порядку. Однако это сопряжено с дополнительными вычислительными затратами в процессе сборки системы.

Из-за уменьшенного размера шаблона (меньший объем памяти для матрицы Якоби), меньших вычислительных затрат и продемонстрированных свойств сходимости мы обычно рекомендуем использовать компактный шаблон. Предполагается, что расширенный шаблон на основе вершин более точен Moukalled et al.(2016), так что, возможно, есть ошибка в реализации, которую нужно найти. Показано, что трафарет с исправлением асимметрии является более точным, однако он значительно замедляет (примерно в 2-3 раза в зависимости от параметров кэширования) процесс сборки из-за того, что необходимо вычислять дополнительные градиенты граней.

На регулярных ортогональных сетках градиент лица можно вычислить с помощью простой линейной интерполяции между градиентами соседних ячеек, например. между и .Однако на неортогональных сетках необходимо внести некоторую поправку. Реализованная коррекция показана в разделе 9.4 Moukalled et al. (2016):

где обозначает линейно интерполированный градиент забойного давления.

Известные ограничения/проблемы

* FE <—> FV с регулируемой муфтой не работает. В частности, если переменные FE пытаются соединиться с переменной FV, они будут давать сбой при попытке доступа к квадратурным точкам с любым индексом выше нуля.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *