-
Укажите где ошибка в шейдере glUniform1fARB( shader_ambient, 0.6);//интенсивность 0,6 glUniform4fARB( shader_color, 0, 0, 0,0);//цвет glUniform3fARB ( shader_light , -1, -1, 0);//источник освещения
//////vertex_shader.txt///// varying vec3 Normal; void main(void) {
gl_Position = ftransform(); Normal = gl_Normal; }
///////////fragment_shader.txt/////// varying vec3 Normal; uniform vec3 light; uniform vec4 color; uniform float ambient;
void main(void) { gl_FragColor = color * ambient* dot(Normal, light);//покисельн освещение }
-
Все запускается, но не правильно освещается? А это ничего, что источник освещения в глобальных координатах, а нормаль - в локальных координатах вершины?
-
а нормаль самому нужно задавать?
-
изменил на uniform vec3 Normal; и добвил glUniform3fARB ( shader_normal, 1, 0, 0);
всё равно не освещает
-
Влючи свет (GL_LIGHT0) и используй как источник света gl_LightSource[0].position, а для нормали normal = gl_NormalMatrix * gl_Normal;
-
> glUniform3fARB ( shader_normal, 1, 0, 0);
Что это??? И как оно поможет в преобразовании??
-
Я надеюсь, тыж понимаешь, что в случае жесткого задания параметров освещение будет абсолютно равномерное? Как насчет векторы нормализовать?
-
Короче говоря - надо еще поизучать шейдеры :)
Кстати, @!!ex, это ты gamedev'e?
-
я и начал с этого примера изучать(на red monkey работает
-
А что у тебя конкретно не работает? Раскажи и покажи код отрисовки (вместе с glBegin..glEnd или что там у тебя). Кстати, если тупо надо найти ошибки в шейдере (ну, типа, перед запуском проверить на "правильность") - есть такая програма GLSL Validate от 3DLabs. Мне она помогает :)
-
вот исходник www.delphisources.ru/pages/sources/graph/2007_year/igrodel_shaders.html там всё работает но нет освещения я хотел переделть с освещением
-
Круто ты НАЧАЛ изучение с parallax mapping'а :)
Лучше скачай себе GLSL specification, и сам напиши небольшую програмку, которая выводила бы что-то типа glBegin(GL_QUADS); glNormal3f(0, 1, 0); glVertex(-x, 0, z); glVertex( x, 0, z); glVertex( x, 0, -z); glVertex(-x, 0, -z); glEnd;
С таким шейдером VERT
varying vec3 normal; void main() { normal = gl_NormalMatrix * gl_Normal; gl_Position = ftransform(); }
FRAG varying vec3 normal; void main() { vec3 nNorm = normalize(normal); vec3 lPos = normalize(gl_LightSource[0].position); float LdotN = dot(nNorm, lPos); gl_FragColor = vec4(LdotN); }
Самый простой шейдер, а там уже будеш добавлять функциональность.
-
Sergio666 большое спасибо
-
> Кстати, @!!ex, это ты gamedev'e?
Не понял вопроса.
> [9] Sergio666 © (17.03.08 20:22)
Очень помогает Render MOnkey от ATI. :) Лично мне. Учитывая ее возможности по написанию шейдеров.... Учитывая туеву хучу примеров... :)
-
@!!ex, ну там такой ник тоже есть. Это ты же? Render MOnkey, наверно много весит. Мне не потянуть... :) Я все испробую у себя в программах :)
-
> @!!ex, ну там такой ник тоже есть. Это ты же?
На планете один человек с таким ником. Я проверял. :)
> Render MOnkey, наверно много весит. Мне не потянуть... : > ) > Я все испробую у себя в программах :)
Чего-то около 60 метров. Но оно того стоит.
-
В Render MOnkey в папке examplex есть папка gl2 так эти примеры что будут работать в opengl2?????????
-
> [16] DoKi (17.03.08 22:01)
У меня в 1.5 все работают.
-
то есть можно скопировать //////vertex_shader.txt/////
///////////fragment_shader.txt///////
задать переменные и всё будет рботать??круто
-
> [18] DoKi (17.03.08 22:08)
Да, но так будут работать только простые эффекты, с одним проходом, без RTT и т.д. Для сложных придется повозится. Но шейдеры там вполне рабочие, их можно использовать без изменений. Я, лично, новые шейдеры пишу сначала в RM, отлаживаю, коэфициенты подбираю, а потом уже внедряю в код.
|