Перейти к содержимому


Свернуть чат Чат Открыть чат во всплывающем окне

Folgen : (2 дней назад) Спс.
GranMinigun : (2 дней назад) Готово. Добро пожаловать на форум, механоид.
GranMinigun : (2 дней назад) Указать, кого именно активировать, например.
Гость : (2 дней назад) Активируйте акк. Хз, нужно что-либо указывать дополнительно для этого в чате, или админы сами всех подряд активируют, кто в очереди на активацию?
GranMinigun : (неделю назад) https://forums.unrea...sed-on-gis-data
Yakim (Watco... : (неделю назад) Аа да? Ну окей)
GranMinigun : (неделю назад) А это даже не обсуждается!
Yakim (Watco... : (неделю назад) А кто сказал что мы пьянели?)
GranMinigun : (неделю назад) Ну что, товарищи, протрезвели?
Yakim (Watco... : (2 недель назад) сяп)
Гость : (2 недель назад) Егорыч на праздники с каникул вернулся. За это тост! Всем маны!
lz : (3 недель назад) Наоборот.
Гость : (3 недель назад) Позвольте уточнить, для будущего наркомана прошлое это будущее или наоборот?
lz : (3 недель назад) Как ты его поймаешь, когда он знает, где ты его будешь ловить?
GranMinigun : (3 недель назад) Ловите наркомана из будущего!
PA3UJIb : (3 недель назад) С новым 2018 годом! А то старый-то 2018 мы и не видели даже
Yakim (Watco... : (3 недель назад) С наступающим)
Yakim (Watco... : (3 недель назад) гы
lz : (3 недель назад) Посоны, с наступающим всех!
Yakim (Watco... : (3 недель назад) +
lz : (3 недель назад) Много капитанства.
lz : (3 недель назад) +
Yakim (Watco... : (3 недель назад) ну такое
Gaantro : (3 недель назад) Описывает принцип работы.
Gaantro : (3 недель назад) Антиграв*
Gaantro : (3 недель назад) Система Grable в Star Citizen (Антигуа) : https://youtu.be/2VkzHbJiCAo
Yakim (Watco... : (3 недель назад) Ага :lol:
lz : (3 недель назад) Чё там у нас? Пошла жара? Главное, чтобы не такое генерилось https://youtu.be/RvAwB7ogkik
Moh : (3 недель назад) Мне, да привет? Ну привет )
Гость : (3 недель назад) И с Новым годом.
Гость : (3 недель назад) Шучу. От Крогота.
Гость : (3 недель назад) От Гостя.
Гость : (3 недель назад) Увидите моха передайте ему привет.
Yakim (Watco... : (3 недель назад) :lol: :P
lz : (3 недель назад) Лан, чё ты, нормально же общались, это нарицательное)
Yakim (Watco... : (4 недель назад) Еще и "Мехах" с маленькой буквы, бесстыжий :D
GranMinigun : (4 недель назад) Был.
lz : (4 недель назад) В мехах был такой рейтинг? Не помню уже.
lz : (4 недель назад) Опасный Яким)
Yakim (Watco... : (4 недель назад) За "маханойдов" и двор, стреляю в упор :D
GranMinigun : (4 недель назад) Я не это имел в виду!
Yakim (Watco... : (4 недель назад) :lol:
lz : (4 недель назад) За механойдов наверное.
lz : (4 недель назад) Всё, рубанул.
lz : (4 недель назад) Ща мы их.

Фотография
- - - - -

[GLSL.hpp] - векторная математика как в GLSL

OpenGL GLSL vector vec2 vec3 vec4

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 07 Декабрь 2014 - 01:40

Векторная математика, максимально приближённая к OpenGL Shading Language (GLSL):
 
GLSL.hpp
 
Хеадер содержит базовые классы наподобие GLSL'евских (bvec2, vec3, ivec4, mat3, dmat4...) и операторы для них, а также написанные на ассемблере GLSL-функции (dot, cross, length, normalize, sin, sqrt, abs, mod, tanh, imulExtended, inverse, round, packHalf2x16 и пр.).
GLSL.hpp является однофайловой альтернативой известной библиотеки glm. Также как и в glm, тут упор сделан на максимальное соответствие синтаксиса официальной GLSL документации, однако есть несколько упрощений. В GLSL.hpp нет поддержки half-векторов, а выделение субкомпонентов вектора при свиззлинге выглядит как вызов функции:

vec3 veca(0), vecb(1.f, 2.f, 3.f);
veca.yz() = vecb.zx(); //In GLSL and glm it will look like "veca.yz = vecb.xz;"

Само собой разумеется, в GLSL.hpp нет самплеров, функций работы с ними и пр. элементов GLSL, специфичных для кода шейдеров. Всё остальное есть.

 

Среди функций GLSL часть применима не только к векторам, но и НЕвекторным типам данных (функции типа sqrt, pow и пр.). Чтобы избежать конфликта имён с фукциями стандартной библиотеки math.h эти функции скрыты под неймспейсом "GLSL". Доступиться до них можно так:

#include "GLSL.hpp"
#include <math.h>
//...
float x;
float y = GLSL::sqrt(x);  //sqrt() function from GLSL.hpp is used
float z = sqrt(x);        //sqrt() function from math.h is used
//...
vec2 u;
vec2 v = sqrt(u); //Vector functions do not require namespace selection

Если инструментария GLSL Вам достаточно и math.h подключать нет желания, можно сделать так:

#include "GLSL.hpp"
using namespace GLSL; //Will conflict if <math.h> included as well
//...
float x;
float y = sqrt(x);  //sqrt() function from GLSL.hpp is used

Напоследок добавлю, что в некоторых написанных на ассемблере функциях использованы команды SSE4.1. Это ставит соответствующие требования к компиллятору, жующему GLSL.hpp, а также процессору, грызущему полученный ехе-шник (SSE4.1 начались с Intel Core).



#2 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 07 Январь 2015 - 23:25

Передрал с GLSL всю векторную математику. Единственное отличие в том, что выделение свиззлнутых субкомпонентов вектора выглядит не как в оригинале "MyVec.xwzz" а со скобочками на конце: "MyVec.xwzz()". В остальном всё так же (названия классов, функций, работа операторов).

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

Все функции описаны на ассемблере; операторы - пока что нет (инлайнами).

 

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



#3 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 12 Январь 2015 - 07:23

Добавил невекторные варианты ГЛСЛевских функций. Чтобы не конфликтовали со стандартными функциями из библиотеки math.h, скрыл ГЛСЛевские варианты под неймспейсом GLSL. Подробнее в первом посте.



#4 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 21 Январь 2015 - 22:10

Расширил поддержку dvecn векторов - в оригинальном GLSL4.5 некоторые функции определены лишь для vecn векторов (sin, cos, exp и пр.), но я решил, что нет смысла в таком ограничении, так что всё, что применимо к vecn теперь имеет аналог и для dvecn.







Темы с аналогичным тегами OpenGL, GLSL, vector, vec2, vec3, vec4

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных