Классические карты теней вкратце. Всенаправленное отображение теней

Построение теней при помощи теневых карт (shadow maps)

Кроме метода теневых объемов (требующего предварительной обработки геометрии и работы в трехмерном пространстве) есть еще один довольно простой метод для получения теней — использование так называемых теневых карт (shadow maps).

Данный метод работает не в исходном трехмерном пространстве, а в картинной плоскости (и поэтому ему свойственны ошибки дискретизации — aliasing artifacts), но зато он крайне прост, не требует специальной обработки геометрии сцены и может использовать альфа-канал текстуры для создания «дырок».

В основе этого метода лежит крайне простая идея, что освещенные фрагменты — это те фрагменты, которые видны из положения источника света.

Поэтому, если мы расположим камеру в положении источника света и отрендерим сцену при помощи этой камеры, то мы получим все освещенные фрагменты.

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

Рис 1. Рендеринг из положения источника света.

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

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

Тогда для определения видимости источником света данного фрагмента достаточно просто сравнить значение глубины depthMap(s,t) и r. Если первая величина больше или равна второй, то данный фрагмент проходит тест глубины для источника света и, следовательно, освещен.

При этом текстурные координаты (s,t,r) фактически являются координатами фрагмента в системе координат камеры, использованной для рендеринга из положения источника света (с точностью до отображения куба [-1,1] 3 в [0,1] 3 ).

Поэтому данные текстурные координаты могут быть получены путем умножения пространственных координат на произведение модельной и проектирующей матриц, использованных при рендеринге из положения источника света. Как и при рендеринге отражения в текстуру необходимо домножение этого произведения на матрицу преобразования, переводящую куб [-1,1] 3 в [0,1] 3 ).

Рис 2. Координаты в относительно источника света.

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

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

Во-вторых, необходим быстрый способ вычисления depthMap(s,t) 3 в [0,1] 3 .

Вместо явного задания текстурных координат как пространственных координат вершин, можно воспользоваться режимом автоматического вычисления текстурных координат GL_EYE_PLANE по пространственным координатам:

Задание карты теней и соответствующего режима текстурирования для нее осуществляется следующим фрагментом кода, выполняемом всего один раз при запуске программы (данный фрагмент создает теневую текстуру и устанавливает ее параметры):

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

Полный исходный код для этой статья на языке С++ (для платформ M$ Windows и Linux) Вы можете скачать по ссылке в конце статьи.

Рис 3. Изображение, полученное при помощи данного метода.

Рассмотрим теперь основные плюсы и минусы данного метода.

К явным плюсам метода относится его простота и отсутствие специальных преобразований данных (в отличии от метода теневых объемов).

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

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

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

Существует модификация данного метода, так называемые перспективные теневые карты (Perspective Shadow Maps, PSM), которая успешно справляется с основными недостатками, правда ценой некоторого усложнения метода.

По этой ссылке можно скачать весь исходный код к этой статье. Также доступны для скачивания откомпилированные версии для M$ Windows, Linux и Mac OS X.

Уроки по OpenGL с сайта OGLDev

Урок 49 — Каскадные карты теней

Давайте всмотримся в тени из урока 47:

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

Другой способ решить эту проблему — это заметить, что тени ближе к камере в плане качества куда важнее, чем тени далеко находящихся объектов. В любом случае, объекты на расстоянии меньше по размеру, а глаза как раз фокусируются на том, что происходит на первом плане, а остальное воспринимается как фон. Если бы мы могли использовать детализированную карту теней для близких объектов, и другую для удаленных, то первая карта теней должна будет покрыть только небольшой участок, то есть, уменьшая соотношение пикселей, которое мы обсудили ранее. Короче говоря, так и работают Каскадные карты теней (Cascaded Shadow Mapping a.k.a CSM). На момент написания этого урока, CSM считается одним из лучших способов для борьбы с Perspective Aliasing. Что же, давайте подумаем как мы могли бы его реализовать.

Читать еще:  Когда на душе очень тяжело молитвы. Молитва когда тяжело не душе

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

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

Следующим шагом мы разбиваем расстояние от ближней плоскости до дальней на три части. Мы будем называть их ближней, средней и дальней. И ещё давайте добавим направление света (стрелка справа):

Итак, как же мы собираемся рендерить каждый каскад в отдельную карту теней? Вспомним этап теней в алгоритме карты теней. Мы настраиваем сцену для рендера с позиции источника света. Это заключается в создании матрицы WVP с мировыми преобразованиями объекта, преобразованиями пространства света и матрицы проекции. Так как этот урок основывается на уроке 47, который работает с тенями направленного света, то матрица проекции будет ортогональной. Обычно CSM используется для открытых сцен, где главный источник света это солнце, и использование направленного света здесь естественно. Если вы посмотрите на матрицу WVP выше, то вы заметите, что первые две части (мировая и обзора) одинаковые для всех каскадов. В конце концов, позиция объекта на сцене и параметры камеры относительно источника света не зависят от разбиения пирамиды на каскады. Так что важна здесь только матрица проекции, поскольку она задает область, которая будет отрендерена. А поскольку ортогональная матрица проекции задается параллелепипедом, то нам нужно задать три различных параллелепипеда, которые будут отображены в три разных ортогональных матрицы проекции. Все три матрицы будут использованы для получения трёх матриц WVP для рендера каждого каскада в его отдельную карту теней.

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

Давайте теперь добавим ограничивающую рамку для второго каскада:

И ещё одну для последнего каскада:

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

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

Находим восемь вершин в пространстве обзора. Это не сложно, требуется лишь немного тригонометрии:

На изображение выше представлен произвольный каскад (так как каждый каскад является такой же усеченной пирамидой с таким же углом обзора, как и остальные). Заметим, что мы смотрим сверху вниз на плоскость XZ. Нам нужно найти X1 и X2:

Таким образом мы получаем координаты X и Z всех восьми вершин каскада в пространстве обзора. Используя аналогичные вычисления для вертикального угла обзора мы можем найти координату Y.

Теперь нам нужно преобразовать координаты каскада из пространства обзора обратно в мировое пространство. Предположим, что зритель расположен в мировом пространстве таким образом, что пирамида выглядит так (красная стрелка обозначает источник света, но пока что мы можем её проигнорировать):

Для того, что бы перенести из мирового пространства в пространство камеры, мы умножаем вектор позиции в мировом пространстве на матрицу камеры (получаемую из позиции камеры и её угла поворота). Это значит, что если мы уже имеем координаты каскада в пространстве камеры, то мы просто умножаем их на обратную матрицу камеры для переноса в мировое пространство:

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

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

Прямиком к коду!

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

Читать еще:  С днем рождения марк 3 года. Поздравления марку с днем рождения и именинами

Главная функция алгоритма CCM такая же, как и для обычного алгоритма карт теней — сначала рендерим на карту теней, а затем используем её для вычисления света.

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

Единственное отличие в проходе света в том, что для света вместо одной матрицы WVP их стало три. Они отличаются только проекциями. Мы получаем их в цикле в середине этапа.

Перед тем как мы займемся вычислением ортогональной проекции, нам следует обратить внимание на массив m_cascadeEnd (который инициализируется в конструкторе). Этот массив задает каскады записывая значения ближней и дальней Z в первый и последний слот соответственно и границы каскадов посередине. Таким образом первый каскад заканчивается в значении из первого слота, второй из второго и третий из последнего. А значение ближней Z плоскости в первом слоте позже поможет упростить вычисления.

Выше мы видим первый шаг из блока теории о вычислении ортогональной проекции для каскада. Массив frustumCorners заполнен восемью вершинами каскада в пространсве экрана. Заметим, что так как задан только горизонтальный угол обзора, то вертикальный мы вычисляем вручную (например, если горизонтальный угол обзора равен 90°, а размеры окна 1000×500, то вертикальный улог обзора будет равен 45°).

Код выше выполняет шаги со #2 по #4. Каждая вершина каскада домнажается на обратную матрицу преобразований для перевода в мировое пространство. А после она домнажается на преобразования света для перевода в его пространство. И затем мы несколько раз используем функции min/max для вычисления ограничивающей рамки каскада в пространстве света.

Текущая запись в массиве m_shadowOrthoProjInfo заполняется используя значения обрамляющей рамки.

Ничего нового в вершинном и фрагментном шейдерах этапа теней. Мы по прежнему просто рендерим глубину.

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

Фрагментный шейдер прохода света содержит некоторые дополнения в основной секции. На вход мы получаем три вершины в пространстве света, которые вычислил вершинный шейдер, а так же значение Z в пространстве клиппера. Вместо одной карты теней их теперь три. Кроме того, приложение должно передавать конец каждого каскада в пространстве клиппера. Чуть позже мы увидим как он вычисляется. А пока просто предположим что значение уже есть.

Для того что бы для пикселя выбрать подходящий каскад мы передаем uniform-массив gCascadeEndClipSpace и сравниваем Z компоненту координаты в пространстве клиппера с каждой записью в массиве. Массив отсортирован по возрастанию удаленности. Мы останавливаемся как только нашли запись, значение которой больше или равно текущей компоненте Z. Затем мы вызываем CalcShadowFactor() и передаем туда индекс найденного каскада. Единственное отличие в самой функции в том, что получаем значение глубины из той карты теней, индекс которой равен найденному. Остальное без изменений.

Последний кусок мозайки — это подготовка значений для массива gCascadeEndClipSpace. Для этого возьмем координату (0, 0, Z), где Z это конец каскада в пространстве камеры. Для перевода значения в пространство экрана мы просто используем обычную проекции перспективы. Такая операция проводится для каждого каскада для поиска границы в пространстве клиппера.

Если вы посмотрите код урока, то вы увидите, что я добавил индикатор границы каскадов назначив каждому из них свой цвет (красный, зеленый или синий). Это очень полезно при отладке, так как вы явно можете видеть границы каждого каскада. С алгоритмом CSM и цветным индикатором сцена выглядит как-то так:

Особенности Таро Теней

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

Особенности Таро Теней

Специфика колоды

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

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

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

Старшие арканы

Как и в классическом Таро, в Таро Теней есть 22 старших Аркана. Карта Антихрист, соответствующая традиционному Шуту, занимает не нулевую, а двадцать вторую позицию. Отсчет начинается с первого аркана, называемого Сатаной. Таро Теней с практическим значением карт зависит от соседствующих арканов.

Сатана (1)

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

Читать еще:  Когда вознесение в году у православных. Вознесение господне

Лилит (2)

Аркан несет в себе энергию Черной Луны. Темная сторона женщины-ведьмы: ревность, зависть, сексуальный вампиризм. Лилит – это темные инстинкты, проявление хаоса, негатив в мыслях, словах и делах.

Геката (3)

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

Люцифер (4)

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

Ариман (5)

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

Ваалверит (6)

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

Вельзевул и Астарот (7)

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

Вульгарная магия (8)

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

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

Жертва искушения (9)

Значение Иеронима, изображенного на карте, – серьезная опасность из-за непреодолимого стремления к чему-то. Искушение подключает человека к темным эгрегорам. Иногда Жертва искушения символизирует порчу или другую черную магию.

Обратный ход колеса (10)

Одна из трактовок – застой в делах и личной жизни. В колоде Теней это еще и кармический негатив. Вопрошающий – жертва любовной магии.

Некромантия (11)

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

Экзорцизм (12)

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

Шабаш ведьм (13)

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

Зеркала (14)

Аркан Зеркала имеет несколько значений, первое из которых – наличие тайного врага. Также Зеркала символизируют очаги негативной энергии в жилище вопрошаемого. При выпадении этого аркана помещение стоит очистить.

Асмодей (15)

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

Воплощенное зло (16)

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

Звезда Люцифера (17)

Карта может предсказать неверность партнера

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

Отраженный свет (18)

Значения этой карты в Таро Теней: страхи, иллюзии, самообман. Часто данные качества провоцируют несчастья или сильно замедляют развитие событий. Особенно это касается женской судьбы.

Благодать (19)

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

Страшный суд (20)

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

Черная Месса (21)

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

Антихрист (22)

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

Жезлы

Младшие арканы, соответствующие масти Жезлов:

  1. Ложные пророки – неверные советы окружения.
  2. Дочери человеческие – любовный треугольник или приворот.
  3. Архонты – влияние деструктивных эгрегоров.
  4. Симон – жертва или предательство.
  5. Энвольтирование – деспотизм, магическое влияние.
  6. Кольцо Фрастраты – зависимость, магическое воздействие.
  7. Зеркало Архимеда – опасная ситуация, вампиризм.
  8. Средства защиты от злых духов – необходимость чистки.
  9. Защита чародея – необходимость установить защиту, самая сильной является та, которая поставлена чародеем.
  10. Арсенал чародея – использование магии.
  11. Четыре ветра – непредсказуемые обстоятельства.
  12. Три Парки – новые успешные дела.
  13. Козел отпущения – клевета.
  14. Магический жезл – потребность активно действовать.

Кубки

Карты могут сулить успех и процветание

Младшие арканы, соответствующие масти Кубков:

  1. Лорд Пенгерсвик – умный и порядочный мужчина.
  2. Леди Пенгерсвик – приятная и разумная женщина.
  3. Кентавр Хирон – погруженность в мир идей, чистое сердце.
  4. Изобретатели Злого и их предводитель Белиал – пороки.
  5. Святая вода – потребность провести чистку водой.
  6. Ведьма из Фраддама – невозможность нанести вред из-за незнания.
  7. Трава Анжелика – отсутствие порчи.
  8. Ложка из розмарина – удачная магическая практика, трудолюбие.
  9. Пионы – здоровье.
  10. Петрушка, базилик, папоротник – сплетни, интриги.
  11. Товия и демон – искушение, измена, любовная магия.
  12. Иов – испытание высшими силами, карма.
  13. Две черные свечи – непорядочность, магия свечей.
  14. Святой Грааль – успех, исцеление, удачный брак.

Младшие арканы, соответствующие масти Мечей:

  1. Агриппа – магическое воздействие.
  2. Ведьма Эрихто – магию практикует женщина (часто Эрихто – это кладбищенская магия).
  3. Монах Авель – дар предвидения.
  4. Привидение – общение с потусторонним миром.
  5. Тролли – потусторонние сущности.
  6. Чванство – тщеславие, зацикленность на себе.
  7. Сладострастие – любовный приворот, похоть.
  8. Гнев – вспыльчивость и агрессия.
  9. Леность – апатия и лень, карта советует оставить дела.
  10. Жадность – алчность и влечение к чему-либо.
  11. Зависть – страдание из-за чужих успехов, порча из зависти.
  12. Обжорство – чревоугодие, вампиризм. Также Обжорство – чрезмерное увлечение чем-то.
  13. Волшебная мазь – исцеление, прояснение.
  14. Меч Экскалибур – благородство, защита, победа.

Источники:

http://steps3d.narod.ru/tutorials/shadow-map-tutorial.html
http://triplepointfive.github.io/ogltutor/tutorials/tutorial49.html
http://zagovormaga.ru/taro/tenej.html

Ссылка на основную публикацию
Статьи на тему:

Adblock
detector