Проектировщик
Регистрация: 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 листья деревьев не отбрасывают тень (тень отбрасывает полигон, куда наложена текстура с листьми)?
Последний раз редактировалось BlackDragon, 13.06.2009 в 01:57.
|