Тема: Xors3D
Показать сообщение отдельно
Старый 13.06.2009, 01:50   #149
BlackDragon
Проектировщик
 
Аватар для BlackDragon
 
Регистрация: 25.03.2007
Сообщений: 536
Написано 252 полезных сообщений
(для 715 пользователей)
Ответ: Xors3D

Я тоже решил приобщиться к прекрасному и начал потихоньку ковырять ксорс. Вообщем, решил использовать в сцене параллакс, и попытался прикрутить шейдер из поста http://forum.boolean.name/showpost.p...8&postcount=96, одннако возникла проблема, что правильный расчет параллакса происходил относительно одного положения камеры, рис. 1.
функция работы с шейдером:
Function Load_ParallaxMap (t1Model, tex_d, tex_n, tex_h,shader_path$)
	t1Shader%=xLoadFXFile(shader_path$)
	
	xSetEntityEffect t1Model,t1Shader%
	xSetEffectTechnique t1Model,"a_Parallax_Map"
	xSetEffectMatrixSemantic t1Model,"mat_World_View_Proj",WORLDVIEWPROJ
	xSetEffectMatrixSemantic t1Model,"matWorld",WORLD
	;		Shader Varriables
	xSetEffectVectorF t1Model,	"LightColor",1.0,1.0,1.0,1.0;.25,.3,.35;.85,.8,.85
	
	
	xSetEffectFloat t1Model,		"LightFalloff",40.0
	xSetEffectFloat t1Model,		"LightSpecular",1.5
	xSetEffectFloat t1Model,		"LightAmbient",.2
	xSetEffectFloat t1Model,		"ParallaxDepth",.03
	xSetEffectFloat t1Model,		 "Attenuation",2.0
		
	xSetEffectTexture t1Model,	"baseMap",tex_d
	xSetEffectTexture t1Model,	"normalMap",tex_n
	xSetEffectTexture t1Model,	"heightMap",tex_h
	
End Function

Function Update_ParallaxMap (t2Model,xlight,xcam)
	;xSetEffectVectorF t2Model,	"PosLight",xEntityX#(xlight,1),xEntityY#(xlight,1),xEntityZ#(xlight,1),1.0
	xSetEffectVectorF t2Model,	"PosLight",15.0,-15.0,10.0,1.0
	xSetEffectVectorF t2Model,	"PosCam",xEntityX#(xcam,1),xEntityY#(xcam,1),xEntityZ#(xcam,1),1.0
End Function



Так как в HLSL я нуб, решил использовать другой шейдер, а именно нвидевский relief_mapping.fx (шейдер вложен в сообщение), из 4х техник ("normal_mapping" "parallax_mapping" "relief_mapping" "relief_mapping_shadows")
нормально заработала только 1-я. При использовании параллакса возникло странное смещение, показанное на рис. 2, остальные техники порождали еще более страшные артефакты, рис. 3.
функция работы с шейдером:
Function Load_Relief_Mapping (t1Model, tex_d, tex_n)
	t1Shader%=xLoadFXFile("..\relief_mapping.fx") 
	
	xSetEntityEffect t1Model,t1Shader
	
	xSetEffectTechnique t1Model,"normal_mapping";"normal_mapping";"parallax_mapping";"relief_mapping";"relief_mapping_shadows"
	xSetEffectMatrixSemantic t1Model,"gWvpXf",WORLDVIEWPROJ
	xSetEffectMatrixSemantic t1Model,"gWorldXf",WORLD
	xSetEffectMatrixSemantic t1Model,"gWorldITXf",WorldInverseTranspose
	
	xSetEffectMatrixSemantic t1Model,"gViewIXf",ViewInverse
	xSetEffectMatrixSemantic t1Model,"gViewXf",View
	xSetEffectMatrixSemantic t1Model,"gWorldViewXf",WorldView
	
	;		Shader Varriables
	
	
	xSetEffectFloat t1Model,		"gTileCount",1
	xSetEffectFloat t1Model,		"gDepth",0.01
	
	
	xSetEffectVectorF t1Model,	"gAmbiColor",.07,.07,.07;1,.8,.6
	xSetEffectVectorF t1Model,	"gSurfaceColor",1,1,1;1,.8,.6
	xSetEffectVectorF t1Model,	"gSpecColor",.75,.75,.75;1,.8,.6	
	
	
	xSetEffectFloat t1Model,		 "gPhongExp",128.0
	
		
	xSetEffectTexture t1Model,	"gColorTexture",tex_d
	xSetEffectTexture t1Model,	"gReliefTexture",tex_n
	
End Function

Function Update_Relief_Mapping (t1Model,xlight,xcam)
	xSetEffectVectorF t1Model,	"gLamp0Pos",xEntityX#(xlight,1),xEntityY#(xlight,1),xEntityZ#(xlight,1)
End Function
Собственно вопрос - где я ошибся?Как исправить?

И еще: это только у меня в демке PSSM листья деревьев не отбрасывают тень (тень отбрасывает полигон, куда наложена текстура с листьми)?
Миниатюры
Нажмите на изображение для увеличения
Название: 234675573.jpg
Просмотров: 774
Размер:	186.9 Кб
ID:	6237  
Вложения
Тип файла: zip relief_mapping.fx.zip (4.6 Кб, 544 просмотров)

Последний раз редактировалось BlackDragon, 13.06.2009 в 01:57.
(Offline)
 
Ответить с цитированием