Game Maker - создание игр | HellRoom Games
Январь 18, 2025, 18:05:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Несколько источников света в 3Д сцене  (Прочитано 11022 раз)
0 Пользователей и 1 Гость смотрят эту тему.
darkart
Новичок
*

Репутация: 1
Offline Offline

API: GameMaker 8.1 Standard
Сообщений: 10


« : Январь 04, 2020, 15:41:24 »

Всем привет. Как реализовать несколько источников света (point light) в 3Д сцене с помощью шейдеров.
Этот код не работает.
Код:
varying vec2 v_vTexcoord;
varying vec4 v_vColour;

varying vec3 v_vNormal;
varying vec3 v_vPosition;

uniform float uLightsCount;
uniform vec3 uLightsCol[60];
uniform vec3 uLightsPos[60];
uniform float uLightsRadius[60];

void main()
{
    vec3 col = vec3(1, 1, 1);
    float lighting = 1.0;
    int lightsCount = int(uLightsCount);
    for (int i = 0; i < lightsCount; ++i) {
        vec3 dir = uLightsPos - v_vPosition;
        float radius = 100.0;
        col += uLightsCol;
        float attenuation = max(1.0 - length(dir)/radius, 0.0);
        lighting = ((dot(normalize(v_vNormal), normalize(dir)) + 0.5 * 0.5) * attenuation);
    }
    gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord) * vec4( lighting * col, 1.0);
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.049 секунд. Запросов: 27.