zoukankan      html  css  js  c++  java
  • 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"
    }
  • 相关阅读:
    J2EE技术(一)——JNDI
    软考注定是一次伤痛
    Ultraedit使用技巧收集
    ArcGIS Server Java 自定义Functionality(转)
    用C#动态刷新KML
    ArcGIS Server Java 自定义task
    Python动态刷新kml
    投影坐标知识小结
    tomcat配置数据源通过JNDI访问mysql数据库
    ArcGIS Server Java自定义tool
  • 原文地址:https://www.cnblogs.com/jeason1997/p/4818631.html
Copyright © 2011-2022 走看看