Unity 关于镜面反射和投影阴影实现
话不多说先上图,有镜面反射,投影器方式实现阴影,下雨效果,工程放最后
镜面反射
镜面反射原理:通俗点说法就是就是在摄象机对称的正下方和主摄象机看同一个焦点,这个反射摄象机看到的东西就是镜面反射的东西,然后这个反射摄象机渲染一张图,扔给地面显示(需要忽略地面层渲染)
具体详细说明可以看这个文章:反射原理
下面是反射镜头渲染的图片
镜面反射优化
1.真实项目中不可能直接用摄象机渲染,多数都会采用替换shader方式渲染,主要是角色shader一般都是比较复杂,使用简单的shader替换渲染提高性能
2.利用cubemap制作反射和反射镜头渲染出来的角色反射结合在一起,这可以减少渲染的物体,渲染和内存就是鱼和熊掌
这两种方式在angrybots里面都有使用过,这个项目很多地方值得参考
3.可以使用反射摄象机使用commandbuff来进行渲染能优化性能(后面工程更新提供)
镜面反射shader相关
shader所要做的事情是计算出镜面在屏幕空间上对应的坐标,然后以此作为UV值去反射纹理取出对应的颜色值
下面是surface代码演示
struct Input{float2 uv_MainTex;float4 screenPos;float3 worldPos;};void surf (Input IN, inout SurfaceOutputStandard o){fixed4 rtRefl = tex2D(_ReflectionTex, (IN.screenPos.xy / IN.screenPos.w)) *0.3;fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color + rtRefl;o.Albedo = c.rgb;}
使用投影实现动态阴影
投影阴影原理:固定角度正交摄象机渲染角色的黑白图(需要替换shader方式),渲染出来的图片进行模糊,然后用投影的方式渲染到地面(需要忽略角色层)
下面是投影摄象机渲染的图片
投影动态阴影优化
1.还是使用替换shader方式
2.场景动态进行烘培,只有玩家执行动态阴影
3.投影摄象机使用commandbuff可以提交效率(后面工程更新提供)
关于下雨效果
可以看看链接,下雨效果
地面的效果是根据一张噪音图进行简单扭动,整体效果给人感觉下雨,水往某个方向流动
工程地址
https://gitee.com/PieKen/UnityReflectionAndProjectShadow
Unity 关于镜面反射和投影阴影实现相关推荐
- OpenGL定向光的投影阴影
OpenGL定向光的投影阴影 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <stdio.h> #include "GL/ ...
- echarts 地图外边框投影 阴影立体效果
echarts 中国地图外边框投影 阴影立体效果,每一级地图都加上立体边框效果 直接上图,
- Real-Time Rendering——7.1 Planar Shadows平面阴影7.1.1 Projection Shadows投影阴影
7.1 Planar Shadows平面阴影 A simple case of shadowing occurs when objects cast shadows onto a planar sur ...
- unity终极抗锯齿抗白边黑边投影阴影不正常问题解决
写这篇时是自己的总结,也是综合了很多其他文章的 因为一般的提问只能解决很少的问题,而且通常不管用,所以自己总结了下 1.首先在edit-project setting-quality可以试着调整里面的 ...
- 【Unity】Planar Shadows平面阴影的实现
Plannar Shadows,即平面阴影,是一个适用于平坦地形的假阴影技术.要求阴影的Receiver为平面,Occluder不与其他物体穿插. 实现效果 1.定向光源Planar Shadows ...
- Unity Shader - Planar Shadow - 平面阴影
文章目录 整体运行效果 思路 Shader 问题 Z-Fighting,解决:按法线方向偏移一丢丢 绘制 Alpha 混合重叠,解决:使用 stencil buffer 来规避 为何出现这个问题 解决 ...
- Unity使用RenderTexture实现实时阴影绘制
前言 一般实时阴影主要还在出现在角色.怪物的脚底为了然场景表现的更加逼真,实现起来主要会用到这三种方式:脚底放个阴影图片跟着主角动,通过摄像机的RenderRexture绘制显示,直接使用Unity的 ...
- 【图形学】31 Unity 的光源衰减和阴影
来源:<UNITY SHADER入门精要> 文章目录 1.用于光照的衰减纹理 2.阴影的产生 ①传统的阴影映射纹理 ②屏幕空间的阴影映射技术(Screenspace Shadow Map) ...
- Unity实现镜面反射效果
1.准备工作 ①创建一个Sphere为发射点,添加LineRenderer组件. ②调整LineRenderer组件下的宽度属性: 当然想更好看些可以添加个材质修改个颜色啥的. ③最后随便创建几个Cu ...
最新文章
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
- VS2010 自定义用户控件未出现在工具箱的解决方案
- pytorch 1.7.x训练保存的模型在1.4低版本无法加载
- OC开发_整理笔记—— CoreLocation(1)基本使用
- 简单粗暴 我再送一波教程资料,Vue、大数据、AI都有
- sql server dateadd()
- 趁老王不在,和隔壁邻居斗斗地主,比比大小
- ESP32 超声波避障小车
- 视觉点胶机系统相机、镜头参数与选择
- 《童趣》——《所见》《小儿垂钓》《村居》《浮生六记·童趣》 ——诗文诵读教学设计
- Xcode8去除控制台多余打印
- 碰撞检测经典解决方案
- multisim怎么设置晶体管rbe_multisim中添加大功率三极管的办法 multisim 三极管设置方法...
- 推荐一个windows下使用的无广告解压缩软件
- Tomcat 深度解析_02
- 科罗拉多矿业大学计算机科学专业,科罗拉多矿业大学有哪些专业_专业排名(TFE美国大学排名)...
- SecureFX_CRT安装
- 控制工程基础 董景新_编委读报丨“十大最美公交司机”都是谁;新疆交通消费扶贫花样多;海南邮轮港口海上游航线试点迎来新突破……...
- 3D Fe3O4@Au@Ag nanoflowers assembled magnetoplasmonic chains for in situ SERS monitoring of plasmon-
- 九天揽月带你玩转Ardupilot 的EKF2纸老虎(1)
热门文章
- qemu里pci设备的热插拔
- android hid 编程,Android Bluetooth HID完成详解,androidhid
- HTML、CSS学习笔记(一)
- 黑窗口方式,使用命令行导入导出Oracle
- Wordpress模板主题中functions.php常用功能代码与常用插件[ 后台篇](持续收集整理)
- shell wait的用法及使用“和wait”并行运行
- 在react引入外部js把当前日期转换成阴历(农历)
- 好客租房153-地图找房模块功能分析
- win7已经阻止此发行者在您的计算机上运行软件,win7提示由于无法验证发行者所以Windows已经阻止此软件怎么办...
- IDM Computer Solutions(UltraEdit V26.10.0.30、UltraCompare V18.10.0.78、UEStudio、UltraFTP==) 全系列最新破解