首页 > 其他分享 >Unity URP Shader之灰度化

Unity URP Shader之灰度化

时间:2023-01-11 12:44:59浏览次数:66  
标签:Off MainTex color half4 Unity URP v2f 灰度 col

shader如下:

 1 Shader "TA/Unlit/UI/UIImageGray"
 2 {
 3     Properties
 4     {
 5         _MainTex("Main Texture", 2D) = "white"{}
 6     }
 7 
 8     SubShader
 9     {
10         Tags
11         {
12             "Queue" = "Transparent"
13             "IgnoreProjector" = "True"
14             "RenderType" = "Transparent"
15             "RenderPipeline" = "UniversalForward"
16         }
17 
18         Pass
19         {
20             Blend SrcAlpha OneMinusSrcAlpha
21             Cull Off
22             Lighting Off 
23             ZWrite Off
24 
25             HLSLPROGRAM
26             #pragma vertex vert
27             #pragma fragment frag
28             #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
29 
30             TEXTURE2D(_MainTex); SAMPLER(sampler_MainTex);
31             float4 _MainTex_ST;
32             
33             struct appdata_t
34             {
35                 float4 vertex : POSITION;
36                 float2 texcoord : TEXCOORD0;
37                 half4 color : COLOR;
38             };
39 
40             struct v2f
41             {
42                 float4 clipPos : POSITION;
43                 float2 uv : TEXCOORD0;
44                 half4 color : COLOR;
45             };
46             
47 
48             v2f vert (appdata_t v)
49             {
50                 v2f o;
51                 o.clipPos = mul(UNITY_MATRIX_MVP, v.vertex);
52                 o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
53                 o.color = v.color;
54                 return o;
55             }
56             
57             half4 frag (v2f i) : SV_Target
58             {
59                 half4 mainCol = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv);
60                 half4 col;
61                 col.rgb = dot(mainCol.rgb, half3(0.222, 0.707, 0.071));
62                 col.a = mainCol.a;
63                 col *= i.color;
64                 return col;
65             }
66             ENDHLSL
67         }
68     }
69 
70     FallBack Off
71 }

 

转载请注明出处:https://www.cnblogs.com/jietian331/p/17043381.html

标签:Off,MainTex,color,half4,Unity,URP,v2f,灰度,col
From: https://www.cnblogs.com/jietian331/p/17043381.html

相关文章

  • URP自带的Tone mapping性能开销问题
    1)URP自带的Tonemapping性能开销问题​2)图集中未使用到Sprite也会被加载到内存中的问题3)GPU带宽:从纹理出发优化带宽①4)GPU带宽:从纹理出发优化带宽②5)GPU带宽:从纹理出发优化......
  • Unity中单例模式的优雅实现
    引言系统地整理了下在Unity中实现单例的几种写法。针对两类情况分别提供了实现方案:纯C#实现(7种)继承自MonoBehaviour(3种)分析了各种方案的优劣,记录了思考过程,最后......
  • VS Code调试Unity程序之2023最新版
    问题换了台开发机,重新安装了下开发环境。突然发现VisualStudioCode无法用来调试Unity了。明明流程都是按照Unity官方教程2023.1进行的,可在创建Launch.json文件时,死活出......
  • Unity中的委托
    目录目录目录基础介绍为什么用委托?源码中的委托用于回调函数用于事件处理其他知识基础介绍在c#中委托是一个类型安全的,面向对象的函数指针。委托的优点是它允许程序员......
  • unityShader入门精要 渲染流水线
    应用阶段把数据加载到显存中设置渲染状态调用DrawCall几何阶段顶点着色器顶点着色器需要完成的工作主要有:坐标变换和逐顶点光照坐标变换:就是对顶点的......
  • 关于Unity的Android工程,写文件的问题
    UnityAndroid工程中的写文件在安卓工程下,写入文件可以直接用:File.WriteAllText(UnityEngine.Application.persistentDataPath+"/XXX.txt","文件内容");路径前面没有加“......
  • Unity+Pico 手柄按键控制
    一、定义手柄按键API1、InputDevices.GetDeviceAtXRNode,通过XRNode获取对应的设备;2、XRNode是一个枚举类型,包含LeftEye、RightEye、CenterEye、Head、LeftHand、RightHa......
  • Unity+Pico 响应射线事件
    1、添加组件为了让场景内的物体能够响应射线的操作,需要在该物体上添加“XRSimpleInteractable”组件,并对射线的交互事件编写脚本看,最常用的是“Hover”和“Select”事件......
  • UnityShader入门精要学习 第二章解惑
    困惑什么是OpenGL、DirectX如果开发者直接访问GPU是一件非常麻烦的事情,我们可能需要和各种寄存器、显存打交道。而图像编程接口再这些硬件的基础上实现了一层抽象。Ope......
  • Unity UI显示3D模型,控件与屏幕分辨率不同,导致在屏幕上鼠标点选模型,无法选中模型的问题
    ​UI界面显示3d模型,需要添加模型相机,通过中间RenderTexture来连接相机与界面的承载容器【RawImage】,根据项目在显示时,会对界面做适当调整,但是RawImage的宽和高会产生运行时......