Shader 之 顶点变形
可以使3D物体通过顶点变形弯曲,常见于跑酷游戏的跑道。可向左、右、上、下弯曲。
Shader "Custom/VertexColorCurved" { Properties { // Shader需要的6个参数 _MainTex ("Base (RGB)", 2D) = "white" {} _QOffset ("Offset", Vector) = (0,0,0,0) _Dist ("Distance", Float) = 100.0 _BrightnessAmount ("Brightness Amount", Float) = 1.0 _SaturationAmount ("Saturation Amount", Float) = 1.0 _ContrastAmount ("Contrast Amount", Float) = 1.0 } SubShader { Tags { "Queue" = "Transparent"} Pass { Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float4 _QOffset; float _Dist; fixed _BrightnessAmount; fixed _SaturationAmount; fixed _ContrastAmount; float _OpacityAmount; struct v2f { float4 pos : SV_POSITION; float4 uv : TEXCOORD0; float3 viewDir : TEXCOORD1; fixed4 color : COLOR; }; v2f vert (appdata_full v) { v2f o; float4 vPos = mul (UNITY_MATRIX_MV, v.vertex); float zOff = vPos.z/_Dist; vPos += _QOffset*zOff*zOff; o.pos = mul (UNITY_MATRIX_P, vPos); o.uv = v.texcoord; //o.color.rgb = v.color.rgb; // 取顶点色 return o; } float3 ContrastSaturationBrightness (float3 color, float brt, float sat, float con) { // Increase or decrease these values to // adjust r, g and b color channels separately float avgLumR = 0.5; float avgLumG = 0.5; float avgLumB = 0.5; // Luminance coefficients for getting luminance from the image float3 LuminanceCoeff = float3 (0.2125, 0.7154, 0.0721); // Operation for brightmess float3 avgLumin = float3 (avgLumR, avgLumG, avgLumB); float3 brtColor = color * brt; float intensityf = dot (brtColor, LuminanceCoeff); float3 intensity = float3 (intensityf, intensityf, intensityf); // Operation for saturation float3 satColor = lerp (intensity, brtColor, sat); // Operation for contrast float3 conColor = lerp (avgLumin, satColor, con); return conColor; } half4 frag (v2f i) : COLOR0 { fixed4 renderTex = tex2D(_MainTex, i.uv); // // Apply vertex color // renderTex.rgb *= i.color.rgb; // 顶点色和贴图混合 // Apply the brightness, saturation, contrast operations renderTex.rgb = ContrastSaturationBrightness (renderTex.rgb, _BrightnessAmount, _SaturationAmount, _ContrastAmount); return renderTex; } ENDCG } } FallBack "Diffuse" }
分类:
Shader
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具