Unity3D 边缘高光Shader

Shader "Custom/NewShader" {
    Properties {
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _RimColor("Rim Color", Color) = (1,1,1,1)
        _RimPower ("Rim power",range(0,5)) = 2//边缘强度
    }
    SubShader {
        Pass
        {

        CGPROGRAM

        #include "UnityCG.cginc"

        struct v2f
        {
            float4 vertex:POSITION;
            float2 uv:TEXCOORD0;
            float4 rim:COLOR;
        };

        sampler2D _MainTex;
        float4 _RimColor;
        float _RimPower;

        v2f vert(appdata_base  v)
        {
            v2f o;
            o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
            o.uv = v.texcoord;
            float3 worldPos = mul(_Object2World, v.vertex).xyz;
            float3 viewdir = normalize((_WorldSpaceCameraPos - worldPos));
            float3 normal = normalize(mul((float3x3)_Object2World,v.normal));

            o.rim.x = 1-saturate(dot(viewdir,normal));

            return o;
        }

        fixed4 frag (v2f IN):COLOR
        {
            fixed4  c = tex2D(_MainTex, IN.uv);
            c.rgb+= pow(IN.rim.x,2)*_RimColor*_RimPower;
            return c;
        }

        #pragma vertex vert
        #pragma fragment frag

        ENDCG
        }
    }
    FallBack "Diffuse"
}
时间: 2024-11-03 22:06:45

Unity3D 边缘高光Shader的相关文章

【浅墨Unity3D Shader编程】之十三 单色透明Shader & 标准镜面高光Shader

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/50878538 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文工程使用的Unity3D版本: 5.2.1  本次更新放出的Shader为透明系列的3个Shader和标准的镜面高光Shader的两个Shader.由易到难,由入门级到应用级,难度梯度合理. 依然是先放出游戏场景的exe

【Unity Shader编程】之十四 边缘发光Shader(Rim Shader)的两种实现形态

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/51764028 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文工程使用的Unity3D版本: 5.2.1  这篇文章主要讲解了如何在Unity3D中分别使用Surface Shader和Vertex & Fragment Shader来编写边缘发光Shader. 一.最终实现的效果

Unity3D中的Shader

简单的说,Shader是为渲染管线中的特定处理阶段提供算法的一段代码.Shader是伴随着可编程渲染管线出现的,从而可以对渲染过程加以控制. 1. Unity提供了很多内建的Shader,这些可以从官网下载,打开looking for older version的链接就能看到Build-in shaders.选择合适的Shader很重要,以下是开销从低到高的排序: (1)Unlit:仅使用纹理颜色,不受光照影响 (2)VertexLit:顶点光照 (3)Diffuse:漫反射 (4)Specul

边缘光shader

Shader "CM/RimLight" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _IlluminPower("Illumin Power", Range(0, 2)) = 1 _RimColor ("Rim Color", Color

Unity3D中的shader基础知识

1.Unity中配备了强大的阴影和材料的语言工具称为ShaderLab,以程式语言来看,它类似于CgFX和Direct3D的效果框架语法,它描述了材质所必须要的一切咨询,而不仅仅局限于平面顶点/像素着色. 2.在Unity3D中创建一个Shader:Assets -> Create -> Shader 3.创建了Shader就可以应用到各个材质Material中,创建材质:Assets -> Create -> Material.然后就可以在材质的Inspector面板中,shad

Unity3D带自发光及边缘高光的shader

1 Shader "Custom/Ill_RimLight" 2 { 3 Properties { 4 _Color ("Main Color", Color) = (.5,.5,.5,1) 5 _OutlineColor ("Rim Color", Color) = (0,0,0,1) 6 _Outline ("Rim width", Range (.002, 0.03)) = .005 7 _MainTex ("

Unity3D引擎之Shader Forge应用

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 本篇博客给读者介绍一个材质渲染的组件-Shader Forge,在材质渲染中可以起到事半功倍的效果,对于很多开发者不熟悉材质渲染的人来说,更容易上手,在应用时首先要对号入座,下面先把

unity3d 材质概述 ---- shader

学习笔记:      材质概述:  物体呈现在我们前面除了形体外,还包括“固有颜色”和“质地”(质感与光学性质).固有颜色让物体的表面看起来是什么颜色,而质感决定了该物质是使用什么材质的.在三维建模软件中,一般使用三维建模工具创作物质的形体,使用贴图表现物体的固有颜色,使用材质表现物体的“质感”.      在unity3d中,所有的材质都是由着色器语言写出来的,由着色器语言编写的程序成为着色器.      每个物质除了形体,都具备“固有颜色”,“质感”,“光学性质”,这三种属性决定了该物质在视

Unity3D 开发之shader教程(浅谈GPU渲染之shader language概述)

尊重他人智慧成果,欢迎转载,请注明作者 心若透明 地址  http://www.cnblogs.com/ubanck/p/4110618.html 在上一篇博客里,大致讲解了一下3D渲染的原理,即从一个简单的模型到渲染到屏幕的过程!其中提到了重要的坐标变换方式,说的不够清楚!今天来谈谈shader语言的执行过程 从硬件上讲,GPU内部有顶点着色器与片段着色器,从渲染管线来看,顶点着色器控制这顶点的坐标转换过程,片段着色器控制像素的颜色计算过程.顶点着色器将顶点转换完成,输入到片段着色器进行处理(