Войти
ПрограммированиеФорумГрафика

MSAA

Страницы: 1 2 Следующая »
#0
(Правка: 26 ноя. 2020, 10:08) 21:22, 25 ноя. 2020

Почему для MSAA требуется текстуры размером = sizeof(PixelFormat) * Texture Width * Texture Height * SampleCount?
Почему на финальной стадии записи в буффер кадра нам просто не использовать СoverageMask, для получения сглаженного значения для пикселя?
Вот примерный код который мог бы быть захардкожен на Output-Merger Stage

fn ComputeOMColor(x, y, sampleCount) {

  dstPixelColor = TextureDst[x, y]
  srcPixelColor = TextureSrc[x, y]
  coverageMask = TextureCoverage[x, y]  

  sumColor = 0
  for (sample = 0; sample < sampleCount; sample++) {
    sumColor += (coverageMask &  (1 << sample)) ? srcPixelColor : dstPixelColor 
  }

  TextureSrc[x, y] = sumColor / sampleCount
}


#1
21:40, 25 ноя. 2020

На мобилках так и делается

#2
22:21, 25 ноя. 2020

точнее в тайловых архитектурах, в том числе и на консолях.

#3
22:40, 25 ноя. 2020

MAMOHT-92
> точнее в тайловых архитектурах, в том числе и на консолях.
Нет, на десктопах тоже тайловая архитектура, но она отличается от мобильной.
И не на всех мобилках такое доступно.
На вулкане надо чтоб поддерживалась память с lazily allocated, а это только мали. На адрено есть другое расширение, с похожим поведением, но там все надо писать в шейдере.

#4
2:11, 26 ноя. 2020

IBets
> Почему для MSAA требуется текстуры размером = sizeof(PixelFormat) * Texture
> Width * Texture Height * SampleCount?

а как ышо?

> СoverageMask

оно для другого

#5
(Правка: 5:22) 5:18, 26 ноя. 2020

innuendo
> а как ышо?
На дворе 2020 год, а он всё пишет "мну/ышо" и прочий мэдвэд сленг, который сдох как лет 15-20 назад.
С тобой явно что-то не так, однострочный.

innuendo
>> СoverageMask
> оно для другого

Alpha to coverage is a multisampling computer graphics technique, which uses the alpha channel of textures as a coverage mask for anti-aliasing.

Ты просто посты набиваешь, затычка в каждой теме?
#6
6:25, 26 ноя. 2020

Kripto289
> Ты просто посты набиваешь, затычка в каждой теме?

> Почему на финальной стадии записи в буффер кадра нам просто не использовать
> СoverageMask, для получения сглаженного значения для пикселя?

ты посты читаешь кверху каком?

#7
7:33, 26 ноя. 2020

IBets
с цветом понятно, а глубину ты как посчитаешь?

#8
9:17, 26 ноя. 2020

Suslik
> с цветом понятно

как раз непонятно, если это не atoc, то зачем там sampleMask?

#9
10:43, 26 ноя. 2020

IBets
> Почему для MSAA требуется текстуры размером = sizeof(PixelFormat) * Texture
> Width * Texture Height * SampleCount?

забавно, почему 2+2=4?  так и задумано, на каждый пиксель делается  SampleCount семплов сабпикселей - есть  CSAA на nvidia

#10
11:05, 26 ноя. 2020

innuendo
> есть  CSAA
Ещё есть? Вроде давно убрали (на 560 у меня ещё вроде работало, на 970 уже нет), а жаль

#11
(Правка: 11:30) 11:30, 26 ноя. 2020

innuendo
Я знаю почему такой размер текстур с MSAA. И да для сабпикселей не выполняется пиксельный шейдер, если явно в шейдере на указан SV_SampleIndex. Вопрос звучал несколько иначе. Почему сделано именно так, а не как я изложил выше, ведь достаточно CoverageMask для ресолвинга MSAA и не хранить текстуры громадного размера, Suslik пока единственный задал верный вопрос, для дальнейших размышлений

#12
12:15, 26 ноя. 2020

IBets
> Почему сделано именно так, а не как я изложил выше, ведь достаточно
> CoverageMask для ресолвинга MSAA и не хранить текстуры громадного размера
шо такое  CoverageMask?

#13
12:37, 26 ноя. 2020

IBets
Даже без глубины у такого способа будут проблемы.
Предположим, что у нас 2х MSAA и половина пикселя закрашена красным треугольником, а другая зеленым:
msaa1 | MSAA
Затем правая половина перерисовывается синим:
msaa2 | MSAA
Если смешать только по маске с предыдущим результатом, то выходит
((0.5, 0.5, 0) + (0, 0, 1)) / 2 = (0.25, 0.25, 0.5)
A должно быть (0.5, 0.0, 0.5). Поэтому приходится хранить цвет каждого семпла отдельно, иначе их нельзя смешать правильно (+ будет зависеть от порядка рисования). Это не так ужасно, на самом деле. По их словам память сжимается перед записью одинаковых семплов, чтобы сэкономить пропускную способность. MSAA сам по себе не сильно сажает производительность, если просто рисовать в back buffer.

#14
12:44, 26 ноя. 2020

Apfel1994
Спасибо

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика