游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2412|回复: 5

introduction to shaderx2问题,hourousha等高手进来做阵

[复制链接]

33

主题

445

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
发表于 2004-11-21 20:21:00 | 显示全部楼层 |阅读模式
自己初学这东东, 想法可能比较傻。
第3章, 关与Specular&Diffuse
在渲染每一个MESH时, 都要渲染PASS 遍,也就是被灯光照射到的灯光数, 然后通过,ALPHA 混合叠加。

我不知道是不是这样做,就是他的精华的地方, 或者都是这样做的。
这样做消耗好打。
所以我想, 修改代码, 渲染所有的MESH 只 PASS 一遍, 然后一次计算所有的灯光
看看效果如何,或者根本计算不出来正确结果。 你们是怎样理解的。

还有一个地方, 作者渲染一个MESH 时, 首先要用 NoOutputMaterial(这个VS,PS 没用实质用处) 渲染一遍,渲染时
首先关闭 SetRenderState(D3DRS_ColorWirite, false),  不往桢缓冲写数据。当Z BUFFER
正常打开。
然后在根据灯光数渲染PASS 遍。 这时打开,SetRenderState(D3DRS_COLORWRITE, true)
但关闭, Z BUFFER, 并且 Z 函数,设置为 EQUAL,从表面上看是用NoOutputMaterial渲染时只是把 MESH 对应的 Z BUFFER 设置上, 在渲染一遍时 通过z 函数 为 equa,l 把MESH 颜色设置到对应的 frame buffer 里, 完成渲染。我把NoOutputMaterial 这遍渲染 删除后并把 后面
D3DRS_COLORWRITE=true, Z-Fun= LessEuqal, D3DRS_ZWRITE= true 设置为正常时, 得到的结果一模一样。 问题就是是否有更深层的含义在里面,自己不能蚕透,  虽然两个结果都一样, FPS 几乎没有 变化。但第一种毕竟多执行好多操作,如顶点变换。 想法可能很幼稚。
[em24] [em24] [em24] [em24] [em24]

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-11-21 23:12:00 | 显示全部楼层

Re:introduction to shaderx2问题,hourousha等高手进来做阵

1:如果shader ins-slot够用,绝大多数情况是把所有light用一个pass完成效率要高。但是overdraw非常严重的情况除外。这时可以考虑先一个pass把depth输出,然后再用一个或者多个pass渲染,这是利用到early-z-culling的方法,另外的方法是考虑使用延迟渲染。

2:每次都写入z-buffer会产生不必要的浪费。不过作者的方法也不怎么样。应该用LessEqual代替equal,这样才能用到early-z-culling。

33

主题

445

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
 楼主| 发表于 2004-11-22 18:07:00 | 显示全部楼层

Re:introduction to shaderx2问题,hourousha等高手进来做阵

小弟 茅塞顿开。 不过我想了很长时间, 感觉 2。0 还没有想象这么强大, PASS 一遍
好象无法做到。。
一,灯光数是动态的, SHADER 文件是静态的, 虽然能够动态的传入 Constant 用如SetVectorArray,用来传递pLightPositions 和一个iCount, 但 VS_OUTPUT 无法动态输出。
他只能固定的输出., 除非在PS 里 全部自己计算插值。
看来作者早就考虑到了。

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-11-22 20:53:00 | 显示全部楼层

Re:introduction to shaderx2问题,hourousha等高手进来做阵

哦,原来它要动态改变光源数,不好意思,没看代码,所以我的分析可以看作是一般情况下(光源数量预先得知)的分析。

0

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2004-11-23 01:38:00 | 显示全部楼层

Re:introduction to shaderx2问题,hourousha等高手进来做阵

请问这书有中文的没

29

主题

99

帖子

104

积分

注册会员

Rank: 2

积分
104
发表于 2004-11-25 14:58:00 | 显示全部楼层

Re:introduction to shaderx2问题,hourousha等高手进来做阵

没有中文的时候大家问"有没有中文的", 有中文了的时候又说"怎么翻译得这么差" ,这就难办了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 10:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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