当前位置: 首页 > news >正文

ZBuffer裁剪planar shadow

适当的操作ZBuffer可以巧妙的完成一些任务,比如我要在擂台的边缘裁剪人的影子。擂台的特点是边缘之外的地方比较低。将影子埋在擂台表面下一点点, 先绘制擂台,然后改变z test func,改为greater,并关闭z write,然后绘制影子,因为影子是在擂台下面的,这样从擂台上方看,影子具有比擂台表面更大的z值,opengl中z值大意味着离camera远,按 照正常的z测试方法,GL_LESS或GL_LEQUAL通过测试,这样影子应该画不出来,而如果将z test func设为GL_GREATER,离camera远的影子反而绘制在擂台表面上了。而在擂台的边缘,因为擂台外的像素会比影子更低,影子的z会比较小, 不能通过GL_GREATER的测试,这样擂台边缘外的影子片段就不能绘制了,也就达到了裁剪的目的。同时由于绘制影子时关闭了z write,影子的z值不会被写入,也就意味着影子之后绘制的东西能挡住影子,比如人总能踩住影子。之后恢复正常的z test并打开z write,绘制人和其他物体。
当然这个方法也并不完美,比如镜头前的物体会挡住影子,影子会浮在擂台后比较高的物体上,比如墙。我的影子是简单的平面阴影,设备没有模板缓冲,这么做似乎已经是可以达到的最好结果了。

相关文章:

  • 3D几何流水线之模型变换
  • html5 canvas 加载图片错误 SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement'
  • RGBA模式人物换色的实现
  • javascript实现QR code扫描
  • android webview旋转屏幕导致页面重新加载问题
  • FLEX实践—自创相册
  • Nebula3的渲染线程插件(Render Thread Plugin)
  • android webview 遇到android.os.FileUriExposedException错误
  • Ucweb的发展趋势
  • Asp.net MVC scheduler实现
  • 一幅图对比软件开发框架
  • 移动Mobile Market运营模式初探之二:价值链是关键
  • 为什么我认为软件方法论无效
  • ArcGIS Server Java ADF 案例教程 29
  • Nodejs + azure +webrtc 实现android 和web视频聊天步骤
  • 【刷算法】从上往下打印二叉树
  • bootstrap创建登录注册页面
  • co.js - 让异步代码同步化
  • download使用浅析
  • EOS是什么
  • ES6--对象的扩展
  • extjs4学习之配置
  • Go 语言编译器的 //go: 详解
  • JavaScript DOM 10 - 滚动
  • npx命令介绍
  • PermissionScope Swift4 兼容问题
  • 闭包--闭包之tab栏切换(四)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 设计模式(12)迭代器模式(讲解+应用)
  •  一套莫尔斯电报听写、翻译系统
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • python最赚钱的4个方向,你最心动的是哪个?
  • Spring Batch JSON 支持
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​力扣解法汇总946-验证栈序列
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (五)IO流之ByteArrayInput/OutputStream
  • (原創) 未来三学期想要修的课 (日記)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net web项目 调用webService
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net操作Excel出错解决
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • ::before和::after 常见的用法
  • [ Linux ] Linux信号概述 信号的产生
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证