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

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

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

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 13.08.2014, 16:17   #166
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

error X3018: invalid subscript 'whatFace'
теперь она же не из структуры input приходит, а отдельно.
так что замени input.whatFace на просто whatFace ниже.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (13.08.2014)
Старый 13.08.2014, 16:30   #167
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,957
Написано 2,276 полезных сообщений
(для 5,267 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Сообщение от Mr_F_ Посмотреть сообщение
теперь она же не из структуры input приходит, а отдельно.
так что замени input.whatFace на просто whatFace ниже.
Большое спасибо, всё работает



Какая разница между записью данных в структуру:
struct VSOutput {

	float4 position  : POSITION0;
	float3 normal 	 : TEXCOORD1;
	float2 texCoords : TEXCOORD0;
	float whatFace 	 : VFACE;

};
И тут:
float4 PSMain(VSOutput input, float whatFace : VFACE) : COLOR {
?

Почему в первом случае надо писать input, а во втором нет?
(Offline)
 
Ответить с цитированием
Старый 13.08.2014, 17:04   #168
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Какая разница между записью данных в структуру
по большому счёту никакой, только структуру ты ретурнишь, и типа считается что ты её должен до конца заполнить поэтому.

Почему в первом случае надо писать input,
потому что у тебя в PS объявлена переменная, которая называется "input". и она содержит поля структуры.

VSOutput input, float whatFace
VSOutput, float - тип переменной
input, whatFace - имя
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (13.08.2014)
Старый 13.08.2014, 17:55   #169
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 977
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

2Arton
struct A { ... }; это описание структуры, то есть как шаблон, реальный объект при этом не создается.
Объект структуры создается так:
A object; - то есть сначала тип, потом имя объекта.
Если нужно обратиться к полю созданного объекта:
object.value;

Теперь вот смотри, в графическом конвеере не всё делают шейдеры. То есть в частности между вершинным и пиксельным тоже происходят скрытые вычисления. То есть это я к тому что если структура VSOutput у тебя определена один раз, то объекта два. Сначала создаешь output в вершинном шейдере и записываешь туда явно вычисленные значения, затем происходят скрытые вычисления, и в пиксельный шейдер тебе возвращается уже другой объект, даже если он того же типа, значения полей будут другими - это важно понимать. В данном случае ты одной структурой описал объекты для выходных вершинных и входных пиксельных данных, но иногда бывают другие ситуации, когда данные различаются и нужно например объявлять отдельно VSOutput и PSInput.

Также вот в такая запись:
float4 PSMain( float4 pos : POSITION0, float whatFace : VFACE ) {...}
будет эквивалентна такой:
struct PSInput {
float4 pos : POSITION0;
float whatFace : VFACE;
};
float4 PSMain( PSInput input ) {...}
Во втором случае мы все входные параметры описали одной стрктурой и передали в качестве аргумента все параметры как один объект.
Только внутри функции уже нужно обращаться к параметрам как к полям объекта input.pos и т. д.
Точно также мы можем объявить и выходную структуру, например в данном случае будет:
struct PSOutput {
float4 col : COLOR0;
};
В данном случае для одного параметра это избыточно, но механизм я думаю ясен.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (13.08.2014)
Старый 24.08.2014, 18:15   #170
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Почему нельзя использовать цвет в качестве числа???
index=tex2D(MixSampler,input.texCoords).r;
Colorka=tex2D(TS[index],input.texCoords);
(Offline)
 
Ответить с цитированием
Старый 24.08.2014, 18:20   #171
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

какую ошибку пишет?
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 24.08.2014, 18:27   #172
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Ошибку не выдает, просто отказывается закрашивать модель текстурой. в Итоге получается серая моделька.

Идея была такая: Картинка[R,G,B,A]
R-индекс первой текстуры
G-индекс второй текстуры
B-коэффициент смешивания

одиннадцать текстур TS[0],TS[1]..TS[10]
(Offline)
 
Ответить с цитированием
Старый 24.08.2014, 20:34   #173
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Ошибку не выдает, просто отказывается закрашивать модель текстурой. в Итоге получается серая моделька.
в ксорсе можно включить лог.
в лог пишутся ошибки компиляции шейдеров.
читай их.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Izunad (24.08.2014)
Старый 24.08.2014, 22:40   #174
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Can't create effect from file 'Resurses\Shaders\EXP\EXP.fx'!
E:\SkinBattle - копия\Resurses\Shaders\EXP\EXP.fx(165,61): error X3000: syntax error: unexpected token ')'
(Offline)
 
Ответить с цитированием
Старый 25.08.2014, 00:37   #175
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

ну и что, по-твоему, здесь написано?)
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 25.08.2014, 04:00   #176
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,957
Написано 2,276 полезных сообщений
(для 5,267 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Скачай дебагер-то, всяко сподручнее чем лог.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Izunad (25.08.2014)
Старый 25.08.2014, 10:30   #177
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Я уже поржал над собой ')'

index=tex2D(MixSampler,input.texCoords).r;
Colorka=tex2D(TS[index],input.texCoords);
Вот настоящая ошибка
Ошибка X3512: сэмплер индекс массива должен быть буквенное выражение
(174): ID3DXEffectCompiler :: CompileEffect: Был выражение об ошибке компиляции
ID3DXEffectCompiler: Компиляция не удалось
(Offline)
 
Ответить с цитированием
Старый 25.08.2014, 11:42   #178
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

а, ну да. в ps3_0 и ниже нельзя использовать честное динамическое индексирование в массив, увы. в вертексном можно.

ты можешь запихать текстуры в атлас или 3д текстуру и вместо индекса смещать текстурные координаты.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
Izunad (25.08.2014), pepel (01.09.2014)
Старый 25.08.2014, 11:57   #179
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Я решил смешивать текстуры без шейдеров, так как текстуры статичны и не особо большого размера

Пример
IncludeFile "Xors3D.pbi":xGraphics3D(0,0,16,0,#False)

Global Image=xCreateImage(512,512)
Global Dim ImageList(40)
For i=0 To 40
  ImageList(i)=xLoadImage("Str(i)+".jpg")
Next


Procedure Mixer(PosX,PosY,Image1,Image2,K.f)
  If PosX>#False And PosY>#False And PosX<1024 And PosY<1024
    RGB1=xReadPixel(PosX,PosY,xImageBuffer(ImageList(Image1)))
    R1=Red(RGB1):G1=Green(RGB1):B1=Blue(RGB1)
    RGB2=xReadPixel(PosX,PosY,xImageBuffer(ImageList(Image2)))
    R2=Red(RGB2):G2=Green(RGB2):B2=Blue(RGB2)
    K1.f=K
    K2.f=1-K
    xColor((R1*K1+R2*K2)/2,(G1*K1+G2*K2)/2,(G1*K1+G2*K2)/2)
    xSetBuffer(xImageBuffer(Image))
    xRect (PosX,PosY,1,1,1)
    xSetBuffer(xBackBuffer())
  EndIf
EndProcedure





For x=0 To 512
  For y=0 To 512
    Mixer(x,y,0,13,1,0.5)
  Next
Next

xSaveImage(image,"123.bmp")
Repeat
  xUpdateWorld()
  xRenderWorld()
  xDrawImage(Image,0,0)
  xFlip()
  xCls()
ForEver
Код довожу до ума так как алгоритм смешивания на самом деле сложнее
(Offline)
 
Ответить с цитированием
Старый 13.09.2014, 10:25   #180
Владислав
ПроЭктировщик
 
Аватар для Владислав
 
Регистрация: 08.05.2011
Сообщений: 143
Написано 46 полезных сообщений
(для 219 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Остался у кого-нибудь урок по шейдерам? помню это pdf файл, но у емня он задевался куда-то
Прошу выложите кто-нибудь, или на почту obelardos@gmail.com
Заранее спасибо)
__________________

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шейдеры pax Наш форум 14 25.10.2009 22:16
Xors шейдеры Spy4433 Xors3D 3 28.08.2009 17:27
Типа шейдеры... :-) L.D.M.T. 3D-программирование 1 14.02.2009 13:19
Урок Фауста Magus Болтовня 0 13.07.2007 02:03
Ashadow & Шейдеры DRAG 3D-программирование 16 10.01.2007 22:21


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


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