Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Visual Basic > OpenGL

Ответ
 
Опции темы
Старый 17.11.2012, 18:54   #1
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Как создать туман с помощью GLSL (WebGL)

Прочитал некоторые уроки по этому поводу, но никак не могу понять с чего начинать.
У меня есть шейдеры:

Вершинный:
attribute vec3 aVertexPosition;
attribute vec2 aTextureCoord;

varying vec2 vTextureCoord;
varying vec3 vPosition;

uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;

void main(void) {
	vPosition = aVertexPosition;
	gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);;
	vTextureCoord = aTextureCoord;
}
Фрагментарный:
#ifdef GL_ES
precision highp float;
#endif

varying vec2 vTextureCoord;
varying vec3 vPosition;

uniform sampler2D SamplerNZ;

void main(void) {

	gl_FragColor = texture2D(SamplerNZ, vTextureCoord);

}
Что надо в них добавить чтобы появился туман?
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием
Старый 17.11.2012, 18:55   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Как создать туман с помощью GLSL (WebGL)

вот тебе формулы простого тумана
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

дальше смотри какие функции есть в glsl и как ими это написать.
(Offline)
 
Ответить с цитированием
Старый 17.11.2012, 19:47   #3
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: Как создать туман с помощью GLSL (WebGL)

Сообщение от Mr_F_ Посмотреть сообщение
вот тебе формулы простого тумана
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

дальше смотри какие функции есть в glsl и как ими это написать.
Суть в том, что я не знаю какими функциями и как ими пользоваться в GLSL. А за формулы линейного, экспоненциального тумана я уже читал. Просто я не знаю как это реализовать... Помогите пожалуйста.
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием
Старый 17.11.2012, 19:49   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Как создать туман с помощью GLSL (WebGL)

Шейдеры? Дистанция пикселя к камере = туман.
(Offline)
 
Ответить с цитированием
Старый 17.11.2012, 20:01   #5
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Как создать туман с помощью GLSL (WebGL)

функций не так то и много
http://www.opengl.org/sdk/docs/manglsl/
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (17.11.2012)
Старый 25.11.2012, 20:20   #6
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Стрелка Ответ: Как создать туман с помощью GLSL (WebGL)

Уже познал!

Чтобы сделать туман на WebGL достаточно взять и переписать фрагментарный шейдер:
#ifdef GL_ES
precision highp float;
#endif

varying vec2 vTextureCoord;
varying vec3 vPosition;

vec4 fColor;
vec4 Fogcolor = vec4(0.0,0.0,0.0,1.0);
float density = 0.0005;
const float LOG2 = 1.442695;
float fogFactor;
float z;

uniform sampler2D SamplerNZ;

void main(void) {

	fColor = texture2D(SamplerNZ, vTextureCoord);
        z = gl_FragCoord.z / gl_FragCoord.w;
	fogFactor = exp2( -density * density * z * z * LOG2 );
	fogFactor = clamp(fogFactor, 0.0, 1.0);
        
        gl_FragColor = mix(Fogcolor, fColor, fogFactor );
}
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:38.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com