• 曲面Shader


    这是一个能让平面呈现出曲面效果的Shaer。

    代码:

    Shader "Custom/CurvedWorld"{
    Properties {
    // Diffuse texture
    _MainTex ("Base (RGB)", 2D) = "white" {}
    // Degree of curvature
    _Curvature ("Curvature", Float) = 0.001
    // Axis Around which the curvature is required
    _Axis ("Axis", int ) = 2
    
    }
    SubShader {
    Tags { "RenderType"="Opaque" }
    LOD 200
    
    CGPROGRAM
    // Surface shader function is called surf, and vertex preprocessor function is called vert
    // addshadow used to add shadow collector and caster passes following vertex modification
    #pragma surface surf Lambert vertex:vert addshadow
    
    // Access the shaderlab properties
    uniform sampler2D _MainTex;
    uniform float _Curvature;
    uniform int	_Axis;
    
    // Basic input structure to the shader function
    // requires only a single set of UV texture mapping coordinates
    struct Input {
    float2 uv_MainTex;
    };
    
    // This is where the curvature is applied
    void vert( inout appdata_full v)
    {
    // Transform the vertex coordinates from model space into world space
    float4 vv = mul( _Object2World, v.vertex );
    
    // Now adjust the coordinates to be relative to the camera position
    vv.xyz -= _WorldSpaceCameraPos.xyz;
    
    // Reduce the y coordinate (i.e. lower the “height”) of each vertex based
    // on the square of the distance from the camera in the z axis, multiplied
    // by the chosen curvature factor
    if(_Axis == 0)
    vv = float4( 0.0f, (vv.x * vv.x) *_Curvature, 0.0f, 0.0f );
    else if(_Axis == 1)
    vv = float4( 0.0f, (vv.y * vv.y) *  _Curvature, 0.0f, 0.0f );
    else if(_Axis == 2)
    vv = float4( 0.0f, (vv.z * vv.z) *  _Curvature, 0.0f, 0.0f );
    
    // Now apply the offset back to the vertices in model space
    v.vertex += mul(_World2Object, vv);
    }
    
    // This is just a default surface shader
    void surf (Input IN, inout SurfaceOutput o) {
    half4 c = tex2D (_MainTex, IN.uv_MainTex);
    o.Albedo = c.rgb;
    o.Alpha = c.a;
    }
    ENDCG
    }
    // FallBack “Diffuse”
    }
    

      效果图:

    不同角度有不同效果:

  • 相关阅读:
    利用JavaScript+DIV+CSS实现下拉菜单。当鼠标移动到菜单选项的时候显示对应的DIV:function show(menu)。当鼠标移出的时候隐藏所有的DIV:function hide()。
    java编程——图片旋转
    名言
    利用CSS对注册页面实现修饰
    软件过程
    Warning: Failed to halt at after bootloader, forced stop at
    cc2650 7x7封装更换为 5X5 4x4
    IAR 路径导致的错误
    cc2650-cc2640蓝牙开发准备手记
    window10装机 nvem简介,针对于 联想R720系列
  • 原文地址:https://www.cnblogs.com/chimo523/p/5145134.html
Copyright © 2020-2023  润新知