2d shader unity 阴影_Unity 简单阴影shader的实现

本文介绍了如何在Unity中实现2D阴影,通过阴影贴图原理,利用额外的摄像机渲染深度图,并在shader中进行深度值比较。步骤包括设置场景、创建深度图、编写shader、处理投影纹理映射,最终在plane上产生阴影效果。文章提供了一个简单的Unity示例demo链接。
摘要由CSDN通过智能技术生成

这边文章会按照阴影实现的原理一步一步去解释每一步的代码和实现

这篇文章使用的是常规的阴影贴图的原理实现,原理很简单,就是在光源的位置假设一个摄像机我们叫做L,然后用L摄像机把照射物体A的深度值存储到一个深度贴图里面,我们正常渲染场景的摄像机叫做E,我们把E照射的物体P点,转换光源空间,然后对比两个点的深度值,就知道p点是否有阴影。

a4e59dd91f6ceec446f5234fd2ab2fcd.png

1 如图我们先建立一个简单的场景然后在光源下面建立一个摄像机用来渲染深度图,cube是我们产生阴影的物体,plane是我们接受阴影的物体。

b8e383218fec8b33e48c8222b62161e0.png

2. 我们建立一个ShadowTest脚本挂接在光源上,在Start函数里面创建渲染贴图

993f56f30badc6324249ece9efc946ac.png
    Camera m_renderCam;
    RenderTexture rt;
    void Start()
    {
        m_renderCam = transform.Find("Camera").GetComponent<Camera>();
        rt = new RenderTexture(512, 512, 24);
        m_renderCam.targetTexture = rt;

    }

3.因为我们只对cube产生阴影,所以我们新添加一

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值