当前位置: 首页 > article >正文

Unity图形学之边缘检测

1.边缘发光:

越是边缘的法线和光线入射角的夹角越大,值越小;

越是正中间的法线和光线的入射角的夹角越小,值越大;

Shader "Custom/NormalOutLine"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _NorTex ("Normal Map (RGB)", 2D) = "white" {}
        _EmisionPower("EmisionPower",float) = 2
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200
        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all  light types
        #pragma surface surf Lambert
        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0
        sampler2D _MainTex;
        sampler2D _NorTex;
        float _EmisionPower;
        struct Input
        {
            float2 uv_MainTex;
            float2 uv_NorTex;
            float3 viewDir;
        };
        fixed4 _Color;
        void surf (Input IN, inout SurfaceOutput o)
        {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            //读取法线
            float3  tempNormal =  UnpackNormal(tex2D (_NorTex, IN.uv_NorTex));
            o.Normal = tempNormal;
            //算出法线和视角的点乘
            float tempFloat = 1- clamp(dot(IN.viewDir,tempNormal),0,1);
            //自发光
            o.Emission = _Color * pow(tempFloat,_EmisionPower);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}


http://www.kler.cn/a/408762.html

相关文章:

  • 重构代码之将值类型改为引用类型
  • android-sdk 安装脚本
  • 11 —— 打包模式的应用
  • 真实网络安全面试场景题
  • apr共享内存
  • mysql根据日期查询没有的日期也要显示数据
  • moduo之线程池ThreadPool
  • JavaScript中的箭头函数以及编写优化
  • Java安卓导航栏设计开发(实战篇)——第十一期
  • mysql-分析并解决mvcc更新丢失问题
  • shell完结
  • git标签和分支
  • 如何在WPF中嵌入其它程序
  • 数据结构--链表实现栈和队列
  • 构建功能完备的Flask Web应用
  • Flink转换算子——flatMap/map/filter/keyby/reduce综合案例
  • meterpreter常用命令 上
  • Python爬虫:如何优雅地获取1688商品详情接口
  • 使用windows窗口展示go-echarts图表
  • Stable Diffusion中的自注意力替换技术与Diffusers实现
  • React中Ant Design组件日期编辑回显
  • 【FPGA开发】Vivado自定义封装IP核,绑定总线
  • ajax (一)
  • timm库加载的模型可视化
  • 【Python-办公自动化】实现自动化输出模板表格报告
  • MongoDB 中设置登录账号密码可以通过以下步骤实现