06.05.2024 20:12:05
Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 7,142
· Новый пользователь: Sarahseato
Последние фото
Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Блоги
general
» Unity3D – Chunky ...
general
» Unity3D: Simple p...
dampirik
» Записки программи...
dampirik
» Локализация прило...
dampirik
» Эффективность рас...
general
» HLSL: Шейдер воды
general
» Unity 3D: Управле...
general
» Unity 3D: FPS scr...
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Урок 4. Как рисовать простые 3D-объекты с помощью HLSL
Использование простого HLSL-шейдера для рисования 3D-объектов.
Перед изучением данного урока вам нужно ознакомиться со следующими уроками:
Шаг 1. Кликните правой кнопкой по папке проекта "Content" в окне "Solution Explorer". В появившемся меню выберите команду "Add -> New Item...".


Шаг 2.
Выберите тип файла "Effect File". Введите имя файла "effect.fx". Нажмите кнопку "Add".


Шаг 3. Студия создаст шаблонный эффект код которого нужно удалить, будем делать свой с нуля.


Шаг 4. В классе Programm замените поле типа BasicEffect на поле типа Effect.
1
2
3
4
5
// эффект BasicEffect
//BasicEffect effect;
 
// эффект (шейдер)
Effect effect;

Шаг 5. В методе LoadContent() замените код создания объекта BasicEffect на код создания объекта Effect загружающегося из файла "effect.fx".

метод LoadContent()
1
2
3
4
5
// создать эффект BasicEffect
//effect = new BasicEffect(graphics.GraphicsDevice, null);
 
// создать объект Effect используя контент менеджер
effect = Content.Load<Effect>("Effect");

 


Шаг 6. Добавьте в файл "effect.fx" следующий HLSL-код в котором объявляются функции вершинного и пиксельного шейдера, а также описывается первый проход техники "Technique0":
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// вершинный шейдер
void VS()
{
 
}
 
// пиксельный шейдер
void PS()
{
 
}
 
// первая техника (по-умолчанию)
technique Technique0
{
// первый проход
pass P0
{
// компиляция вершинного шейдера
vertexShader = compile vs_1_1 VS();
 
// компиляция пиксельного шейдера
pixelShader = compile ps_1_0 PS();
}
}

Шаг 7. Добавьте в функцию вершинного шейдера описание входящих и исходящих параметров.
1
2
3
4
5
6
7
8
9
10
11
12
// вершинный шейдер
void VS(
// входящие параметры - позиция и цвет вершины
in float4 inPos : POSITION,
in float4 inColor : COLOR0,
 
// исходящие параметры - позиция и цвет вершины
out float4 outPosition : POSITION,
out float4 outColor : COLOR0 )
{
 
}

 


Шаг 8. Добавьте в функцию вершинного шейдера код копирования позиции и цвета вершины.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// вершинный шейдер
void VS(
 
// входящие параметры - позиция и цвет вершины
in float4 inPos : POSITION,
in float4 inColor : COLOR0,
 
// исходящие параметры - позиция и цвет вершины
out float4 outPosition : POSITION,
out float4 outColor : COLOR0 )
{
// копируем позицию вершины
outPosition = inPos;
 
// копируем цвет вершины
outColor = inColor;
}

Шаг 9. Добавьте в функцию пиксельного шейдера описание входящих и исходящих параметров.

 

1
2
3
4
5
6
7
8
9
10
// пиксельный шейдер
void PS(
// входящий параметр - цвет пикселя
in float4 inColor : COLOR0,
 
// исходящий параметр - цвет пикселя
out float4 outColor : COLOR0 )
{
 
}

 

Шаг 10. Добавьте в функцию пиксельного шейдера код копирования цвета пикселя.
1
2
3
4
5
6
7
8
9
10
11
12
// пиксельный шейдер
void PS(
 
// входящий параметр - цвет пикселя
in float4 inColor : COLOR0,
 
// исходящий параметр - цвет пикселя
out float4 outColor : COLOR0 )
{
// копируем цвет пикселя
outColor = inColor;
}

Теперь при запуске приложения мы увидим пустое окно в котором будет нарисован цветной треугольник

В секции загрузок лежит архив с исходным кодом этого и других уроков.


Комментарии
#1 | EseninKazan 06.08.2010 23:19:49
извините, я может что-то не понимаю, смысл в шейдерах, которые ничего не делают?Smile

все ясно, шейдеры, которые что-то делают дальше, здесь описание создания шейдера
#2 | Azazello 10.02.2011 15:17:19
Content.RootDirectory = "Content";

Про эту строку ничего не сказано, у меня без нее ошибка при выполнении вылетала
#3 | Prefect 12.08.2011 18:45:56
Если у кого ошибки с компиляцией шейдера - то измените версию компилятора
GeSHi: C#
  1. // первый проход
  2. pass P0
  3. {
  4. // компиляция вершинного шейдера
  5. vertexShader = compile vs_1_1 VS();
  6.  
  7. // компиляция пиксельного шейдера
  8. pixelShader = compile ps_1_0 PS();
  9. }
Добавлено за 0.005 секунд, используя GeSHi 1.0.8.2

на
GeSHi: C#
  1. // первый проход
  2. pass P0
  3. {
  4. // компиляция вершинного шейдера
  5. vertexShader = compile vs_2_0 VS();
  6.  
  7. // компиляция пиксельного шейдера
  8. pixelShader = compile ps_2_0 PS();
  9. }
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.2
#4 | VitGun 15.09.2011 10:46:27
а у меня нет папки content (XNA 4.0 VS 2010), приложение обычное консольное.
#5 | beaver 20.09.2011 08:27:13
VitGun, wtf?
#6 | Phantom 20.09.2011 12:00:51
2beaver: надеюсь, это он так шутит...
#7 | Scarecrow 09.11.2012 11:21:45
Я не мог найти шаблон *.fx в VS2010. Его там просто нет. Подскажите может нужно какое то дополнение установить.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Отлично! Отлично! 80% [4 Голоса]
Очень хорошо Очень хорошо 20% [1 Голос]
Хорошо Хорошо 0% [Нет голосов]
Удовлетворительно Удовлетворительно 0% [Нет голосов]
Плохо Плохо 0% [Нет голосов]
Авторизация
Логин

Пароль



Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

11.12.2023

11.12.2023
[img]https://x.pin
-up-world.com/imag
es/img4.jpg[/img]
[url=https://ofoi.
cenditt.loan/new-k
atiana-kay-fucking
-with-lucky-fan-p1
-porn-scenes/]133K
67% New Katiana

11.12.2023
[img]https://wwt.s
sgameadmin2.com/im
ages/img4.jpg[/img
]
[url=https://k.smi
letaxservice.com/r
edirect/SFpEdDR1cG
V4czNKMmxlQi9tVytI
d3dxWW9GWTd5Zk52TD
VVMG1mc3YvUmlDMWUw

11.12.2023

11.12.2023

10.12.2023
[img]https://ey.os
prey-holidays.uk/i
mages/img10.jpg[/i
mg]
[url=https://nby.h
ighlyresponsible.c
om/696488/sexyfeet
girl2020-gotta-kee
p-them-soft-lookin
g-

30.11.2023
[img]https://nuggi
e.army/images/img1
5.jpg[/img]
German Porno kostenlos - Deutsche Pornos &amp; Pornofilme. [url=ht

30.11.2023

30.11.2023
[img]https://where
ijoin.com/images/i
mg8.jpg[/img]
Voir Films VF VOSTFR - . [url=http://mvig.j
ulieemontelaro.com
/]omegleX

30.11.2023
[img]https://steam
unlocked.tangobliv
ion.com/images/img
14.jpg[/img]
Top - Rated Live Sex Cam Videos to Watch Online. [

29.11.2023

29.11.2023
[img]https://chaii
t.com/images/img8.
jpg[/img]
Ottmaza.live - Ottmaza.Com Official Website | Ottmaza | Ottmaza.Net | Ottmaz

29.11.2023
[img]https://ezyja
mb.co.uk/images/im
g10.jpg[/img]
Free Porn - Sex, Tube Videos, XXX Pics, Pussy in Porno

29.11.2023
[img]https://launc
hbusinessloans.org
/images/img15.jpg[
/img]
Asyalı - Koreli Japon Seks Filmleri Türkçe A

29.11.2023
[img]https://panen
poker.org/images/i
mg8.jpg[/img]
[url=http://watchm
ovies.seoullittlem
all.com/]Junkie Musik Lossless &#ff7dee MГєsica ElectrГіnica p

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,12 секунд 13,298,501 уникальных посетителей