как добавить pcf в карты теней

Я нашел эту ссылку, которая немного объясняет о отображении теней pcf. Я просмотрел предоставленный образец кода и не могу понять, что такое массив смещения. Я предполагаю, что это массив float2, и я знаю, что он сместит пиксель, чтобы дать соседние. Я просто не могу понять, какое смещение должно быть установлено.

Ссылка: http://www.gamerendering.com/2008/11/15/percentage-closer-filtering-for-shadow-mapping/

Вот код

float result;
result = shadow2DProj(shadowMap,texCoord+offset[0]);
result += shadow2DProj(shadowMap,texCoord+offset[1]);
result += shadow2DProj(shadowMap,texCoord+offset[2]);
result += shadow2DProj(shadowMap,texCoord+offset[3]);
result /= 4.0; // now result will hold the average shading

Я должен просто упустить что-то простое

Любая помощь приветствуется

Спасибо,

Отметка


person MulletDevil    schedule 09.05.2011    source источник
comment
Что произойдет, если вы удалите значения смещения?   -  person Jay    schedule 18.05.2011
comment
Вы должны установить режим сравнения текстур карты теней на GL_COMPARE_REF_TO_TEXTURE. Это даст вам аппаратный PCF. Это на самом деле объясняется в статье, которую вы связали...   -  person Tara    schedule 15.12.2015


Ответы (1)


Я заметил, что вы используете shadow2DProj, насколько мне известно, это функция GLSL, а эквивалентом в HLSL/CGSL является tex2Dproj. Если вы получаете пустой экран, это может привести вас ближе, поскольку вы сможете временно удалить значения смещения.

Удачи, приятель, я тоже новичок в этом, поэтому я знаю, как это бывает :)

person Jay    schedule 18.05.2011
comment
Код, который я разместил там, не мой, это пример кода, который я нашел в Интернете. Мне удалось настроить смещение, оно должно быть 1/ширина текстуры. Теперь я хорошо понимаю, как работает pcf. По сути, вы определяете, сколько пикселей находится в тени в области вокруг текущего пикселя, на котором вы находитесь в пиксельном шейдере. Затем вы делите это число на количество протестированных пикселей и устанавливаете затухание теней на это значение. Я также использую HLSL. - person MulletDevil; 28.05.2011