社区
C++ Builder
帖子详情
请教OpenGL的4种阴影算法
qq195208507
2007-05-30 09:39:09
谁能给我大致介绍下4种阴影算法哈
...全文
729
5
打赏
收藏
请教OpenGL的4种阴影算法
谁能给我大致介绍下4种阴影算法哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
the_venus
2012-08-28
打赏
举报
回复
还有一种就是平面阴影:
你可以推导一下平面投影的矩阵,并将模型视图矩阵直接乘以它,然后直接绘制物体,那么物体的实际位置就被投影到一个平面上去了,这种方式固有的缺陷就是阴影只能显示在平面上,如果要投影的面不是平面,那么它将会失效,阴影矩阵:
设直接方程为 A*x + B*y + C*z +D *1 =0;则平面可以表示为(A,B,C,D)设光源位置为(P,Q,R,0)(注意光源只能为线光源,不能为点光源,在点光源模式下面,每一个顶点的投影矩阵都是不同的,要得到平面阴影只能采用顶点着色器了,这方面的知识你自己钻研吧,我就不讲了),则投影矩阵(行优先矩阵)为:
|BQ + CR -BP -CP -DP|
1 | - AQ AP + CR -CQ -DQ|
----------------- *
AP + BQ + CR | - AR -BR AP + BQ -DR|
| 0 0 0 AP + BQ +CR|
你也可以自己推导它!
hot_blood2001
2009-02-06
打赏
举报
回复
要是有代码参考就好了
qq195208507
2007-05-30
打赏
举报
回复
大哥 除了shadow map和shadow volume外其余的2种是什么哈
Y___Y
2007-05-30
打赏
举报
回复
前面的一段代码漏贴了
阴影映射—OpenGL实现
典型的深度图生成过程
glEnable (GL_DEPTH_TEST); //启用深度测试
glDepthFunc (GL_LESS);
glEnable (GL_POLYGON_OFFSET_FILL); //启用多边形偏移
glPolygonOffset(1.1f, 4.0f);
glColorMask(0, 0, 0, 0); //禁写颜色缓存
drawScene(); //绘制场景
glEnable(GL_TEXTURE_2D);
glGenTextures(1, &depthMap); //创建深度图纹理对象
glBindTexture(GL_TEXTURE_2D, depthMap ); //绑定深度纹理
glCopyTexImage2D(GL_TEXTURE_2D, 0,GL_DEPTH_COMPONENT, 0, 0, depthMap_sizeX, depthMap_sizeY, 0); //拷贝到纹理
Y___Y
2007-05-30
打赏
举报
回复
阴影映射—OpenGL实现
典型的阴影比较过程
glBindTexture(GL_TEXTURE_2D, depthMap); //绑定深度图纹理
glEnable(GL_TEXTURE_2D);
//启用深度比较
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_COMPARE_MODE_ARB,
GL_COMPARE_R_TO_TEXTURE);
//深度比较函数 (if r<=texture then not in shadow)
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
//深度比较应产生的结果的形式
glTexParameteri(GL_TEXTURE_2D,
GL_DEPTH_TEXTURE_MODE_ARB,
GL_ALPHA);
可参考的文献
[1] Projective Texture Mapping. Cass Everitt. NVIDIA. http://developer.nvidia.com/object/Projective_Texture_ Mapping.html
[2] Fast Shadows and Lighting Effects Using Texture Mapping. Mark Segal. SIGGRAPH 1992.(投影映射的原创论文)
[3] Casting Curved Shadows On Curved Surfaces. Lance Williams. SIGGRAPH 1978.(阴影映射的原创论文).
[4] Rendering antialiased shadows with depth maps. William Reeves . SIGGRAPH 87.(阴影反走样的经典论文)
[5] Shadow Mapping Tutorial. http://www.paulsprojects.net/tutorials/
[6] MSDN. Key word: glTexGen
【转】
阴影
锥原理详解
【转】
阴影
锥原理详解 原文地址:http://www.yakergong.net/blog/archives/23 [原理]首先,讲一下
阴影
体原理 我会尽我所能的讲得清楚一些,但是我仍然希望读者队模板缓存(stencil buffer),深度(depth)有基本的...
android每日一问1【2011-09-08】
如何解决圆角图片
阴影
问题 实现水波纹特效 怎么调试“LumaQQME”程序? 谁能给我一个完整的android画图入门的源代码
opengl
贴图的问题 十万火急 谁给介绍一本android的相关书籍 更多android开发资料,请访问...
对WoW Shader文件的分析
Wow的渲染引擎是同时支持固定渲染管线渲染和Shader渲染管线渲染的.bls文件是wow的shader文件,分析它...bls里存储的是
OpenGL
low-level shading language的指令,terrain1.bls,terrain2.bls,terrain3.bls,terrain4.bls...
Qt 使用笔记 --转自 wangwenx190/Note
其中,只有 Windows 平台上的版本号是4位的,其他平台都是3位 VERSION = 1.2.3 # 设置图标。必须为.ico格式,且最大 256x256 RC_ICONS = "../res/icon.ico" # 设置代码页(此处以Unicode为例) RC_CODEPAGE = 1200 #...
GDI
OPENGL
。 EUDC 。 其他系统 DLL 支持。 其他没有文档记载的函数。 3、 GDI 对象句柄 32 位的 GDI 句柄由 8 位未知的高位、 1 位堆对象标记、 7 位对象类型信息和高 4 位是 0 的 16 位索引组成...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章