Собственно, смысл исходной статьи как-раз и был в том, чтобы расширять исследованную область :)
Так-то понятно, что обычно намного проще и быстрее взять готовый пример и что-то в нём подправить, но и ценность такого решения получается соответствующая.
Мне купили педальную машинку где-то в 85-м, кажется, мне тогда было 5 лет. Разогнаться - ну только если с горки, и то весьма стрёмно, потому что люфт у руля был аццкий, и управлять на скорости очень сложно. Ехать на такой машине можно только по ровному асфальту, и то - весьма тяжело физически.
Но для ребенка это все-равно очень интересно, потому что велосипед-велосипедом, а тут - кузов, руль! Лампочками помигать можно. Совсем другой уровень!
Я только не понимаю почему именно такая неудобная конструкция привода, ну да ладно...
Stellarium - это, конечно, хорошо. Но было бы интересно увидеть сам конус тени и полутень, их движение относительно вращающейся Земли. Может быть есть и такая программа?
Кстати, с удовольствием использовал бы Mercurial, вот только Гитхаб его не поддерживает. И Bitbucket больше его не поддерживает. В общем, не так уж много вариантов mercurial-хостинга, особенно бесплатных. Так что без Git'а никак. И хотя hg неплохо справляется с git-сабрепами, использовать разные VCS в проекте не очень-то удобно, уж проще использовать лишь git, но по своему усмотрению :-)
По скорости может и не так уж сильно лучше, но минус свободный регистр, и если он non-volatile, то надо его сохранять/восстанавливать.
Да, стек в x64 выравнен - хоть тут хорошо :) Правда только FPC зачем-то в любую asm-функцию добавляет пролог/эпилог в виде add rsp,8, а Delphi нет, поэтому в Delphi на входе rsp всегда заканчивается на 8, а в FPC - на 0.
"When the source operand is a memory operand, the operand must be aligned on a 16-byte boundary or a general-protection exception (#GP) will be generated." (https://www.felixcloutier.com/x86/haddpd)
Другое дело, что haddpd немного не та операция, которую удобно применять к операндам в памяти.
Боль в том, что все SSE-инструкции, кроме movups и её подобной, требуют выравненных операндов, а это труднодостижимо. Например для глобальных переменных в Delphi вообще нет способа выравнивания, с локальными переменными и структурами тоже есть нюансы.
Классная статья, но жаль что практически не затронута тема выравнивания. Для векторного SSE на Паскале это весьма болезненная тема (особенно в Delphi, ибо в FPC хотя бы есть директивы выравнивания).
У вас какое-то бинарное понятие "знания теории шахмат". Оно подтверждается чем - дипломом, сертификатом? :-)
Ну да ладно, вполне допускаю, что вы знаете "теорию шахмат", можете сильно-сильно, аргументированно и успешно спорить с шахматистами о том, сколько стоит ферзь - 10 или 8 пешек. Но вот от темы разработки игрового AI вы, судя по вашим постам, весьма далеки. Так что нет смысла спорить, пусть каждый занимается своим делом.
Более того, за счёт NAT у провайдера (который может быть, а может и не быть) один IP-адрес может одновременно использоваться несколькими пользователями.
Как пользователь авторитетно заявляю: я не хочу "чтобы все баги были исправлены", т.к. я просто не пользуюсь приложением, если оно глючит и не удовлетворяет моим запросам, а устанавливаю то, которое работает стабильно и уже имеет все необходимые фичи. Поэтому пользователю апдейты не нужны.
Ну а как разработчик, я, конечно, понимаю и экономию тестирования на юзерах, и стремление пораньше выпустить MVP, и желание напомнить о себе придумывая новые "очень полезные фичи".
Нельзя просто взять и интерполировать содержимое буфера глубины — это физически бессмысленно. Другое дело, что можно взять вместо сэмплера типа texture2D — сэмплер типа texture2DShadow, и вот тогда текстуре можно выставить GL_LINEAR чтобы получить PCF "из коробки", а не писать его самому, как делает автор. Шейдер становится проще, но теряется возможность играться с параметрами PCF для настройки размытия теней.
А ещё преобразования координат из ShadowCalculation() и bias можно впихнуть в матрицу пространства света, тогда это всё делается в вершинном шейдере, а в пиксельный попадают уже сразу готовые координаты для сэмплера.
Да, там всё сложно, поэтому нужно разбираться, а не просто сравнивать числа.
Если я в этом ничего не понимаю — это не значит, что это невозможно использовать.
Люди постоянно умирают и это нормально. Вот если сотня человек погибла в авиакатастрофе или в результате теракта — объявляют национальный траур. Тысячи человек погибли от ковида — люди пошумели, но в целом ничего страшного. Десятки тысяч умерли от гриппа — и это вообще никого не парит. А ещё больше людей просто умирает. И ничего. Хотя у каждого есть какая-то причина или скорее комплекс причин. И каждый сам влияет на свою жизнь и на своё здоровье. Хочешь чистый воздух — живи в Сибири, хочешь большую зарплату и последний айфон — приходится дышать смрадом мегаполиса. Вот только основная часть загрязнения городского воздуха — от автотранспорта, а не от электростанций. Может быть в Китае иначе, но речь шла про Европу.
Собственно, смысл исходной статьи как-раз и был в том, чтобы расширять исследованную область :)
Так-то понятно, что обычно намного проще и быстрее взять готовый пример и что-то в нём подправить, но и ценность такого решения получается соответствующая.
Мне купили педальную машинку где-то в 85-м, кажется, мне тогда было 5 лет. Разогнаться - ну только если с горки, и то весьма стрёмно, потому что люфт у руля был аццкий, и управлять на скорости очень сложно. Ехать на такой машине можно только по ровному асфальту, и то - весьма тяжело физически.
Но для ребенка это все-равно очень интересно, потому что велосипед-велосипедом, а тут - кузов, руль! Лампочками помигать можно. Совсем другой уровень!
Я только не понимаю почему именно такая неудобная конструкция привода, ну да ладно...
Max - дорого, лучше уж Blender. Но надо где-то взять достаточно точные параметры движения небесных тел. И текстуру карты Земли :)
Stellarium - это, конечно, хорошо. Но было бы интересно увидеть сам конус тени и полутень, их движение относительно вращающейся Земли. Может быть есть и такая программа?
Кстати, с удовольствием использовал бы Mercurial, вот только Гитхаб его не поддерживает. И Bitbucket больше его не поддерживает. В общем, не так уж много вариантов mercurial-хостинга, особенно бесплатных. Так что без Git'а никак. И хотя hg неплохо справляется с git-сабрепами, использовать разные VCS в проекте не очень-то удобно, уж проще использовать лишь git, но по своему усмотрению :-)
О, кстати, было бы любопытно узнать как у вас организован этот процесс. Какая IDE, какой компилятор, как устроена итоговая сборка?
По скорости может и не так уж сильно лучше, но минус свободный регистр, и если он non-volatile, то надо его сохранять/восстанавливать.
Да, стек в x64 выравнен - хоть тут хорошо :) Правда только FPC зачем-то в любую asm-функцию добавляет пролог/эпилог в виде add rsp,8, а Delphi нет, поэтому в Delphi на входе rsp всегда заканчивается на 8, а в FPC - на 0.
Ну как же не требует:
"When the source operand is a memory operand, the operand must be aligned on a 16-byte boundary or a general-protection exception (#GP) will be generated." (https://www.felixcloutier.com/x86/haddpd)
Другое дело, что haddpd немного не та операция, которую удобно применять к операндам в памяти.
Но раз не возникало, тогда ok.
Боль в том, что все SSE-инструкции, кроме movups и её подобной, требуют выравненных операндов, а это труднодостижимо. Например для глобальных переменных в Delphi вообще нет способа выравнивания, с локальными переменными и структурами тоже есть нюансы.
Классная статья, но жаль что практически не затронута тема выравнивания. Для векторного SSE на Паскале это весьма болезненная тема (особенно в Delphi, ибо в FPC хотя бы есть директивы выравнивания).
У вас какое-то бинарное понятие "знания теории шахмат". Оно подтверждается чем - дипломом, сертификатом? :-)
Ну да ладно, вполне допускаю, что вы знаете "теорию шахмат", можете сильно-сильно, аргументированно и успешно спорить с шахматистами о том, сколько стоит ферзь - 10 или 8 пешек. Но вот от темы разработки игрового AI вы, судя по вашим постам, весьма далеки. Так что нет смысла спорить, пусть каждый занимается своим делом.
Что вы называете "думающий движок", чем он отличается от "не думающего"? И почему "не зная основ тактики"?
Ну вот, как стало известно, в Саратове какие-то шаги в этом направлении уже делали. Но результат не всех устроил.
Более того, за счёт NAT у провайдера (который может быть, а может и не быть) один IP-адрес может одновременно использоваться несколькими пользователями.
Как пользователь авторитетно заявляю: я не хочу "чтобы все баги были исправлены", т.к. я просто не пользуюсь приложением, если оно глючит и не удовлетворяет моим запросам, а устанавливаю то, которое работает стабильно и уже имеет все необходимые фичи. Поэтому пользователю апдейты не нужны.
Ну а как разработчик, я, конечно, понимаю и экономию тестирования на юзерах, и стремление пораньше выпустить MVP, и желание напомнить о себе придумывая новые "очень полезные фичи".
Нельзя просто взять и интерполировать содержимое буфера глубины — это физически бессмысленно. Другое дело, что можно взять вместо сэмплера типа texture2D — сэмплер типа texture2DShadow, и вот тогда текстуре можно выставить GL_LINEAR чтобы получить PCF "из коробки", а не писать его самому, как делает автор. Шейдер становится проще, но теряется возможность играться с параметрами PCF для настройки размытия теней.
А ещё преобразования координат из ShadowCalculation() и bias можно впихнуть в матрицу пространства света, тогда это всё делается в вершинном шейдере, а в пиксельный попадают уже сразу готовые координаты для сэмплера.
Разумеется. Как и наша жизнь.
Полураспад урана — миллиарды лет, он малоактивный. А вот то, что образуется в реакторе и содержится в отходах — в миллионы/миллиарды раз активнее.
Люди постоянно умирают и это нормально. Вот если сотня человек погибла в авиакатастрофе или в результате теракта — объявляют национальный траур. Тысячи человек погибли от ковида — люди пошумели, но в целом ничего страшного. Десятки тысяч умерли от гриппа — и это вообще никого не парит. А ещё больше людей просто умирает. И ничего. Хотя у каждого есть какая-то причина или скорее комплекс причин. И каждый сам влияет на свою жизнь и на своё здоровье. Хочешь чистый воздух — живи в Сибири, хочешь большую зарплату и последний айфон — приходится дышать смрадом мегаполиса. Вот только основная часть загрязнения городского воздуха — от автотранспорта, а не от электростанций. Может быть в Китае иначе, но речь шла про Европу.
Вот такая логика.
Логику этой фразы не понял совсем.