游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4067|回复: 3

shader(hlsl cg)中法线贴图(Normal map)时,Vertex Shader中的

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-8-16 16:01:00 | 显示全部楼层 |阅读模式
我看了很多文章, 在求切线空间时, 都是使用的p2 - p1 = (u2 - u1).T + (v2 - v1).B;p3 - p1 = (u3 - u1).T + (v3 - v1).B
这个公式来计算的, 可是在vertex shader中 只知道一个点的position 如何获取的P2 P3呢
还是有其他的思路啊 难道是在程序中求完了 TBN_MATRIX 又传到了vertex shader里啊??

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2012-8-16 18:06:00 | 显示全部楼层

Re:shader(hlsl cg)中法线贴图(Normal map)时,Vertex Shader中

知道了,在Ogre中可以使用manual->tangent(x, y, z)来设置切线空间的正切方向, 然后利用normal与tangent叉乘得到dinormal 可是这样又会有一个疑问 如果切线空间不是正交的情况呢 比如说将一个纹理贴到 梯形上 但是 四个点的纹理坐标是(0 ,  0)(0 ,  1)(1 ,  1)(1 ,  0)如果在程序中计算法线副、法线和正切线的话 正切线和副法线的夹角就不是90度 而 如果按照ogre用的shader脚本的话, 只能传递normal和tangent, 得到的副法线和正切线的夹角就是90度了 两种做法得到的切线坐标系却不是一个 这该怎么办???

11

主题

95

帖子

658

积分

高级会员

Rank: 4

积分
658
发表于 2012-8-19 08:44:00 | 显示全部楼层

Re:shader(hlsl cg)中法线贴图(Normal map)时,Vertex Shader中

对ORGE的不了解!但是对于DX sdk有很多的资料!

0

主题

243

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
发表于 2012-8-20 10:57:00 | 显示全部楼层

Re: shader(hlsl cg)中法线贴图(Normal map)时,Vertex Shader

tangent值一般是模型导出时候就导出的,就像法线一样,可以在shader里直接用,如果没有导出,可以用你主贴的方式去算,那个不是在shader里算,是在cpu上面算的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-27 19:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表