Какая система координат используется в металле?

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


person zeus    schedule 04.11.2019    source источник


Ответы (1)


Металлические системы координат

Metal определяет несколько стандартных систем координат для представления преобразованных графических данных на разных этапах конвейера рендеринга.


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


2) Координата буфера кадра (координата области просмотра): когда мы записываем во вложение или читаем из вложения или копируем / копируем между вложениями, мы используем координату буфера кадра, чтобы указать местоположение. Начало координат (0, 0) находится в верхнем левом углу (Y вниз). введите описание изображения здесь


3) Координата текстуры: когда мы загружаем текстуру в память или образец из текстуры, мы используем координату текстуры. Начало координат (0, 0) находится в верхнем левом углу (Y вниз). введите описание изображения здесь


D3D12 и металл

NDC: + Y вверх. Точка (-1, -1) находится в нижнем левом углу.
Координата фреймбуфера: + Y вниз. Начало координат (0, 0) находится в верхнем левом углу.
Координаты текстуры: + Y вниз. Начало координат (0, 0) находится в верхнем левом углу.


OpenGL, OpenGL ES и WebGL

NDC: + Y вверх. Точка (-1, -1) находится в нижнем левом углу.
Координата кадрового буфера: + Y вверх. Начало координат (0, 0) находится в нижнем левом углу.
Координаты текстуры: + Y вверх. Начало координат (0, 0) находится в нижнем левом углу.


person Hamid Yusifli    schedule 09.11.2019
comment
Что по-прежнему сбивает с толку, так это то, что, хотя эти системы координат находятся в документации по Metal, поэтому они должны быть правильными, почему изображения показывают, что начало координат находится в левом нижнем углу, когда вы делаете что-то вроде того, что вы видите здесь: stackoverflow.com/questions/55821459/? Я ожидал, что темный черный угол будет в верхнем левом углу, если это то место, где находится исходная точка. - person johnbakers; 28.12.2019