由于Universal Render Pipeline目前(2020年4月1日)把阴影淡入淡出这个功能竟然给取消了…我自己拿片元位置到相机位置的距离进行了一个淡化,但是阴影边缘老是被裁切…后来研究了一下Unity里面这个CBuffer是干嘛的。有一些结论,鉴于似乎没搜到,就发个博客吧。。。

至于这些东西为啥是这样…,我也不知道。。。反正人家Unity就是这么干的

unity_ShadowFadeCenterAndType决定了阴影消散的中心:xyz保存的是camPos +  normalize( camFront ) * 0.26666f * shadowDistance, type是1或者0(没细研究,这里不需要)。

_LightShadowData决定了淡化的范围:z: 5/_ShadowDistance,  w保存了一个被z决定的值(2.66666)。需要细说一下。。。

根据阴影中心的计算方式,阴影中心坐标在相机位置的前方0.2666(1/3.75)倍阴影距离处,以这个中心画一个(1-0.266666)的圆,当作阴影的边界,使得正前方的阴影距离刚好是设置好的阴影距离(对,两侧的距离确实不够shadowDistance,要不然不会被裁掉)。这个时候可以用ComputeShadowFade函数里面的式子算一下,直接代入完全散尽的阴影处距离(2.75/3.75=0.73333)shadowDistance:

(2.75/3.75)*_shadowDistance  * 5/ shadowDistance  = (2.75*5)/3.75 = 3.666666 = 2.6666666+1

阴影渐变开始的最远近距离处(圆心偏了…所以会这样)为0。这里的新的常数5是控制阴影衰减范围的一个参数,后面另它为变量k,改变k可以控制阴影淡入淡出范围。

这里可以明显看出来,这个_LightShadowData.w就是让最远处为1的一个偏移修正值。既然是这样,那么这个5也可以用来改变控制阴影淡入淡出的范围,假定我们需要让阴影的c%是渐变的。那么可以计算出来控制参数

k=1/c

offset = k * 0.7333 - 1

这个offset就是_LightShadowData的w值了

主要是在这里不太会打公式。。。等我弄好公式把pdf放到Gitgub吧…

Unity 阴影淡入淡出效果中Shader常量 unity_ShadowFadeCenterAndType和_LightShadowData的问题的更多相关文章

  1. 测试SDWebImage淡入淡出效果在UITableView中的重用显示问题

    测试SDWebImage淡入淡出效果在UITableView中的重用显示问题 这个是在上一篇教程的基础上所添加的测试环节! 效果图(从效果图中看是没有任何重用问题的): 源码: ImageCell.h ...

  2. (转)winform Form 淡入淡出效果

    原文地址:http://blog.csdn.net/a237428367/article/details/5933565 using System.Runtime.InteropServices; p ...

  3. Jquery小例子:全选按钮、加事件、挂事件;parent()语法;slideToggle()语法;animate()语法;元素的淡入淡出效果:fadeIn() 、fadeOut()、fadeToggle() 、fadeTo();function(e):e包括事件源和时间数据;append() 方法

    function(e): 事件包括事件源和事件数据,事件源是指是谁触发的这个事件,谁就是事件源(div,按钮,span都可以是事件源),时间数据是指比如点击鼠标的事件中,事件数据就是指点击鼠标的左建或 ...

  4. javascript 单个图片的淡入淡出效果和多张图片的淡入淡出效果

    最近刚好在看之前妙趣网站的javascript 初级运动教程,教程里说设置图片的透明度使用了一个变量.这种方法确实不错,但是燕姐喜欢麻烦.就用自己的理解方法写了一遍.其中也是各种坑.现在先把一个图片的 ...

  5. 【jQuery】使用JQ来编写面板的淡入淡出效果

    本文与上一篇的<[jQuery]使用JQ来编写最主要的淡入淡出效果>(点击打开链接)为姊妹篇. 但上一篇仅仅是对文本的基本控制,本篇则是对面板元素进行控制. 尽管功能上很类似,可是所用到的 ...

  6. 【Android Developers Training】 69. 视图切换的淡入淡出效果

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. Axure实现淡入淡出效果

    小伙伴们有可能在各大网站看到淡入淡出效果的动画,比如淘宝.京东,淘宝每天会把各种打折促销.今日推荐.限时抢购等做成淡入淡入或者向右活动等类似翻页的效果放在首页,吸引顾客的眼球,那么如何使用Axure来 ...

  8. jQuery-4.动画篇---淡入淡出效果

    jQuery中淡出动画fadeOut 让元素在页面不可见,常用的办法就是通过设置样式的display:none.除此之外还可以一些类似的办法可以达到这个目的.这里要提一个透明度的方法,设置元素透明度为 ...

  9. 淡入淡出效果的js原生实现

    淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装, 有用得着的朋友, 可以直接使用. 代码中另附有一个设置元素透 ...

随机推荐

  1. pip install mysqlclient报错(OSError: mysql_config not found)

    报错截图 一般情况是系统没有安装libmysqld-dev 执行 sudo apt install libmysqld-dev完成安装后再 pip install mysqlclient就可以了(系统 ...

  2. 集成google翻译的小tips

    文章首发于github.io 2018-08-04 12:43:20 google翻译的强大,就像我们公司的slogan : "让语言无国界,让世人心相通" 友情提示: googl ...

  3. 【MySQL 原理分析】之 Explain & Trace 深入分析全模糊查询走索引的原理

    一.背景 今天,交流群有一位同学提出了一个问题.看下图: 之后,这位同学确实也发了一个全模糊查询走索引的例子: 到这我们可以发现,这两个sql最大的区别是:一个是查询全字段(select *),而一个 ...

  4. iview2+ 表单密码验证

    <Form :model="formItem" v-model="formItem.id" ref="formItem" :label ...

  5. vue+webpack怎么分环境进行打包

    这里说下,webpack打包里面涉及到的东西,不止webpack,还有node的知识, node的全局变量process,process.env用于返回用户环境信息对象,因为是node的全局变量,所以 ...

  6. LoadRunner初入门(安装)

    在经过了两天网上找软件-真机上装软件-完了发现真机不能用(不能用的原因就是IE不能打开 试了很多方法现在真机上的ie变成了ie8英文版),果断用上了虚拟机 虚拟机刚开始要装镜像 一开始下的是64位的发 ...

  7. Jira使用说明文档

    1      建立项目 1.1    权限归属 Jira系统管理员 1.2    执行内容 建立项目.工作流分配调整.制定项目负责人及默认经办人 1.3    建立项目过程 登录使用Jira系统管理员 ...

  8. 029.核心组件-Controller Manager

    一 Controller Manager原理 1.1 Controller Manager概述 一般来说,智能系统和自动系统通常会通过一个"控制系统"来不断修正系统的工作状态.在K ...

  9. 从源码看 PHP 7 数组的实现

    本文所用源码为 PHP 7.4.4 的版本. PHP 7 数组概述 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当 ...

  10. Spring注解 - 生命周期、属性赋值、自动装配

    一.Bean的生命周期 流程 Bean创建 -- 初始化 -- 销毁 创建: 单实例:在容器启动时创建对象 多实例:每次调用时创建对象 初始化: 都是在对象创建完成后,调用初始化方法 销毁: 单实例: ...