博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity, unlit surface shader (texColor only surface shader)
阅读量:6436 次
发布时间:2019-06-23

本文共 2099 字,大约阅读时间需要 6 分钟。

要实现双面透明无光照只有纹理色的surface shader。

错误的写法:(导致带有曝光)

Shader "Custom/doubleFaceTranspTexColor" {

  Properties {
    _Color ("Color", Color) = (1,1,1,1)
    _MainTex ("Albedo (RGB)", 2D) = "white" {}
  }
  SubShader {
    Tags { "RenderType"="Transparent" }
    LOD 200
    Cull Off
    Blend SrcAlpha OneMinusSrcAlpha // Alpha blending
    CGPROGRAM
    // Physically based Standard lighting model, and enable shadows on all light types
    #pragma surface surf MyTexColor alpha:fade
    half4 LightingMyTexColor(SurfaceOutput s, half3 lightDir, half atten){
      half4 c;
      c.rgb=s.Albedo;
      c.a=s.Alpha;
      return c;
    }
    // Use shader model 3.0 target, to get nicer looking lighting
    #pragma target 3.0

    sampler2D _MainTex;

    struct Input {

      float2 uv_MainTex;
    };

    fixed4 _Color;

    void surf (Input IN, inout SurfaceOutput o) {

      // Albedo comes from a texture tinted by color
      fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
      o.Albedo = c.rgb;
      o.Alpha = c.a;
    }
    ENDCG
  }
  FallBack "Diffuse"
}

正确的写法:

Shader "Custom/doubleFaceTranspTexColor" {

    Properties {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader {
        Tags { "RenderType"="Transparent" "RenderQueue"="Transparent"}
        LOD 200
        
        Cull Off
        Lighting Off
        Blend SrcAlpha OneMinusSrcAlpha // Alpha blending
        
        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf MyTexColor alpha:fade
        
        half4 LightingMyTexColor(SurfaceOutput s, half3 lightDir, half atten){
            half4 c;
            c.rgb=half3(0,0,0);
            c.a=s.Alpha;
            return c;
        
        }
        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0
        
        
        sampler2D _MainTex;
        struct Input {
            float2 uv_MainTex;
        };
        fixed4 _Color;
        void surf (Input IN, inout SurfaceOutput o) {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Emission = c.rgb;
            o.Albedo = fixed3(0,0,0);
            o.Alpha = c.a;
        }
        ENDCG
    } 
    FallBack "Diffuse"
}

参考:http://answers.unity3d.com/questions/272749/how-to-write-unlit-surface-shader.html

转载地址:http://poqga.baihongyu.com/

你可能感兴趣的文章
servlet单实例多线程模式
查看>>
Keras Data augmentation(数据扩充)
查看>>
VTK计算网格模型上的最短路径
查看>>
open-falcon的邮件报警
查看>>
iOS9的几个新关键字(nonnull、nullable、null_resettable、__null_unspecified)
查看>>
GraphQL入门2
查看>>
可以落地的DDD到底长什么样?
查看>>
使用 Content-Encoding: br 替换 Content-Encoding: gzip
查看>>
【Linux】cp命令
查看>>
基于matplotlib的数据可视化 - 热图imshow
查看>>
linux编译安装mysql5.1.x
查看>>
Tensorflow get_variable和Varialbe的区别
查看>>
CSS魔法堂:那个被我们忽略的outline
查看>>
学习ASP.NET Core Razor 编程系列十八——并发解决方案
查看>>
[翻译]pytest测试框架(二):使用
查看>>
Java-线程间通信小结
查看>>
PHPUnit简介及使用(thinkphp5的单元测试安装及使用)
查看>>
人工智能热门图书(深度学习、TensorFlow)免费送!
查看>>
照片与本人严重不符
查看>>
编码(2)从字节理解Unicode(UTF8/UTF16)
查看>>