首页 > 其他分享 >阴影

阴影

时间:2024-10-23 15:11:53浏览次数:2  
标签:渲染 阴影 v2f float4 SHADOW PositinWS

实时阴影渲染

自定义阴影

原理

平面阴影

Pass
        {
            Name "Shadow"
            Blend SrcAlpha OneMinusSrcAlpha
            Stencil//避免阴影重影
            {
                Ref 255
                Comp NotEqual
                Pass Replace
            }

            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
            };

            struct v2f
            {
                float4 PositionClip : SV_POSITION;
            };

            float4 _ShadowColor;
            float4 _Offset;

            v2f vert (appdata v)
            {
                v2f o;
                float4 PositinWS=mul(unity_ObjectToWorld,v.vertex);//世界坐标
                float WorldPosY=PositinWS.y;//未被污染的Y值
                PositinWS.y=_Offset.y;//平面
                PositinWS.xz+=_Offset.xz*(WorldPosY-_Offset.y);//控制轴点
                o.PositionClip = mul(UNITY_MATRIX_VP,PositinWS);//裁剪坐标

                return o;
            }

            half4 frag (v2f i) : SV_Target
            {
                return _ShadowColor;
            }
            ENDCG
        }

image

宏阴影

Unity自带的用来渲染阴影的三个宏,分别是SHADOW_COORDS, TRANSFER_SHADOW以及SHADOW_ATTENUATION。

//引入头文件
 #include "AutoLight.cginc"
//输出结构体:
struct v2f {
    //其他属性的声明
    ...

    //声明阴影纹理坐标
    SHADOW_COORDS(2)
};
//顶点Shader:
struct v2f {
    //其他属性的声明
    ...

    //声明阴影纹理坐标
    SHADOW_COORDS(2)
};
//片元Shader:
fixed4 frag(v2f i) : SV_Target {
    //物体表面光照、着色计算

    //使用内置宏对阴影进行采样
    fixed shadow = SHADOW_ATTENUATION(i);

    return fixed4(ambient + (diffuse + specular) * atten * shadow, 1.0);
}
//结束
Fallback "Diffuse"

Shadow Mask

Shadowmask是一种特定于URP的阴影渲染技术。Shadowmask通过使用两个渲染通道来处理实时阴影,其中一个通道用于渲染实时阴影,另一个通道用于渲染静态阴影。这种技术有助于提高渲染性能并减少实时阴影的计算成本。
https://docs.unity3d.com/Manual/LightMode-Mixed-Shadowmask.html
https://cloud.tencent.com/developer/article/1764847

标签:渲染,阴影,v2f,float4,SHADOW,PositinWS
From: https://www.cnblogs.com/comradexiao/p/18496439

相关文章

  • Comfyui如何快速选出图像的高光和阴影 _ layerstyle节点
    ✨背景comfyui中,除了AI图像生成本身以外,还会有很多图像处理的工作要做,比如说调整色阶、饱和度,或者还原商品细节。在最近探索的一个场景中,需要将图像中的高光部分提取出来做光源模拟,发现layerstyle这个节点组中包含了这个功能,所以简单分享一下。✨layerMask:ShadowHighlight......
  • 给控件添加阴影效果SystemDropShadowChrome
    引入命名空间 xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"给控件添加引用,这个性能比较好。例如给Combobox下拉框添加引用效果<--!其他代码--><Popupx:Name="PART_Popup"AllowsTransparency="true"Grid.Colum......
  • 3.js - 阴影映射、色调映射(曝光度)
    阴影映射、色调映射阴影映射shadowMapconstrenderer=newTHREE.WebGLRenderer({alpha:true})`阴影映射: 用于,计算物体投射到其他物体上阴影的技术, 阴影映射,通过,在场景中,从光源的视角渲染一次场景(深度测试)来工作,从而确定哪些部分被其他物体遮挡,进而生成阴影。`......
  • 奇瑞车模表演引众怒,低俗营销何时休?上市之路蒙阴影
    在最近的2024成都车展上,奇瑞汽车再次被推上了舆论的风口浪尖。这次,不是因为其车型的创新或技术的突破,而是因为车模的争议性表演。据现场视频显示,奇瑞iCAR展位的一名车模在车展上作出了大尺度的动作,引发了大量围观和拍照,其中不乏儿童的身影。这一幕迅速在网络上引发了广泛争议,不......
  • 记录 PyQt6 / PySide 6 自定义边框窗口的 Bug 及可能可行的解决方案:窗口抖动和添加 DW
    前言:本篇文章将要讨论我在前不久发表的关于PyQt6/PySide6自定义边框窗口代码及内容中的问题:(终)PyQt6/PySide6+Pywin32自定义标题栏窗口+完全还原Windows原生窗口边框特效_pyside6win32无边框窗口-CSDN博客https://blog.csdn.net/2402_84665876/article/detail......
  • echarts 加一个圆环图带阴影
    这里面一共三个圆,最外层是一个半透明的varchartDomymr=document.getElementById('container-ymr');varmyChartymr=echarts.init(chartDomymr);varoptionymr;varoptionymr_data=[{value:332,name:'类型A',color:newecha......
  • 前端必知必会-CSS阴影效果Shadow
    文章目录CSS阴影效果CSS文本阴影多个阴影CSSbox-shadow属性卡片总结CSS阴影效果使用CSS,您可以为文本和元素添加阴影。CSS文本阴影CSStext-shadow属性将阴影应用于文本。最简单的用法是,您只指定水平阴影(2px)和垂直阴影(2px):示例h1{text-shado......
  • Winserver 阴影会话,远程协助相关
    场景(方便管理协助其他远程会话)用户都是运行在winserver上的一个一个远程会话,有时需要看一下客户操作了什么。换做本地客户端的情况,可以让客户开远程工具。方式1:远程协助 有一个轻松连接,这个目前没弄出来。效果跟金万维的一样,只要知道对方IP、计算机名。还有6位连接码就可以......
  • 求阴影面积【简便算法】
    如图所示,长方形ABCD的面积为20平方厘米,S△ABE=4平方厘米,S△AFD=6平方厘米,三角形AEF的面积是多少平方厘米 (?)A 7.2B 7.6    【正确答案】C 8.4D 8.8首先拿到这道题以后,先大致的看一遍,发现这个题目的描述很简短,几何图形也很简单,所以一定是有简便算法的,不需要设什么变量,考试......
  • 【python】PyQt5中的QFrame控件,控制图形的边框样式、阴影效果、形状等属性
    ✨✨欢迎大家来到景天科技苑✨✨......