【UnityShdaer入门精要】RampTexure 渐变纹理

Shader 之——rampTex使用(崩坏3) 核心代码 fixed4 frag(v2f i) : COLOR { fixed4 col = tex2D(_MainTex,i.uv)*_Brightness; fixed3 BumpMap = UnpackNormal(tex2D(_Bump, i.uv)); ... 阅读详情

常用来干什么?

  • 拿来控制漫反射光照的结果
  • 风格化渲染 如卡通风格渲染

效果

  拿一张渐变纹理贴图控制漫反射的结果,在如下贴图的效果下明暗效果变化呈现块状:在块儿内的梯度小,块儿内的梯度大。
在这里插入图片描述
  最终呈现的效果类似于风格化渲染,这里想卡通渲染。
在这里插入图片描述

key

            fixed halfLambelt = 0.5 * dot(worldNormal , worldLightDir) + 0.5;
            //在渐变纹理上采样(x,x)的点作为漫反射的反射率 手动控制光照
            fixed3 diffuseColor = tex2D(_RampTex, fixed2(halfLambelt, halfLambelt)).rgb * _Color.rgb;

在这里插入图片描述

代码

Shader "Unlit/RampTexure"
{
    Properties
    {
        _Color ("Color Tint",Color) = (1,1,1,1)
        _RampTex ("Ramp Tex", 2D) = "white" {}
        _Specular("Specular",Color) = (1,1,1,1)
        _Gloss("Gloss", Range(8.0,256)) = 20
    }
    SubShader
    {
        Pass
        {
        Tags { "RenderType" = "ForwardBase" }
        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag


        #include "UnityCG.cginc"
        #include "Lighting.cginc"

        fixed4 _Color;
        sampler2D _RampTex;
        float4 _RampTex_ST;
        fixed4 _Specular;
        float _Gloss;

        struct appdata
        {
            float4 vertex : POSITION;
            float4 uv : TEXCOORD0;
            float3 normal : NORMAL;
        };

        struct v2f
        {
            float2 uv : TEXCOORD2;
            float4 vertex : SV_POSITION;
            float3 worldNormal : TEXCOORD0;
            float3 worldPos : TEXCOORD1;
        };


        v2f vert (appdata v)
        {
            v2f o;
            o.vertex = UnityObjectToClipPos(v.vertex);
            o.worldNormal = UnityObjectToWorldNormal(v.normal);
            o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;

            o.uv = TRANSFORM_TEX(v.uv, _RampTex);
            return o;
        }

        fixed4 frag(v2f i) : SV_Target
        {
            fixed3 worldNormal = normalize(i.worldNormal);
            fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos)); 

            fixed ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;
                
            fixed halfLambelt = 0.5 * dot(worldNormal , worldLightDir) + 0.5;
            //在渐变纹理上采样(x,x)的点作为漫反射的反射率 手动控制光照
            fixed3 diffuseColor = tex2D(_RampTex, fixed2(halfLambelt, halfLambelt)).rgb * _Color.rgb;

            fixed3 diffuse = _LightColor0.rgb * diffuseColor;

            fixed3 viewDir = normalize(UnityWorldSpaceViewDir(i.worldPos));
            fixed3 halfDir = normalize(worldLightDir + viewDir);
            fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(0, dot(worldNormal, halfDir)), _Gloss);
            // sample the texture
               
            return fixed4(ambient + diffuse + specular,1.0);
        }
        ENDCG
    }
    }
    Fallback "Specular"
}
「UnityShader笔记」08. 基础卡通渲染—渐变纹理 介绍颜色渲染技术 阅读详情

相关推荐

【Unity Shader】(7)渐变纹理 控制漫反射光照效果 (动漫风、插画风的理论)

在Unity Shader中实现渐变纹理,并控制漫反射光照效果 回顾我们之前写过的基础纹理贴图,我们设置了一个固定的“BaseColor”来控制材质球的基底颜色。那有没有一种可能,让我们的材质球,根据不同阴影部分或者顶点信息,来改变我们的基地颜色呢?——答案是渐变纹理。 渐变纹理 渐变纹理最早出现在Gooch等人在1998年发表的一片著名的论文《A Non-Photorealistic Lighting Model For Automatic Technical illustration》提出,作者提出了一

1eonChan的博客 3098

Unity urp2d ShaderGraph 实现一个黑白转彩色的场景渐变效果 设计思路

那只能走走别的方向了,仔细想想,原来的shader也确实不太完美,因为我们要的是整个画面的黑白,而上面的shader则需要给每个场景物品都安装这个shader跑计算的话,无疑是降低了性能和扩展性的。我们可以放弃if节点,改用lerp在两个色域中做插值,就可以优化渐变效果,插值需要一个0-1的参数,我们选择使用“Saturate”节点,这个节点可以将一个浮点值映射到[0,1]的范围内,即输入大于1时=1,输入小于0时等于0,然后将结果连接到Lerp节点就可以了。这样我们这个效果就成功实现了。

m0_51776409的博客 4903

UnityShader 实现3D模型颜色渐变效果

使用Unity Shader使模型的颜色产生简单的两种颜色过渡的渐变效果。

Unity3d Shader篇(十)— 渐变纹理

渐变纹理(Gradient Texture)是一种常用的纹理类型,在计算机图形学中广泛应用于实现各种颜色渐变效果。本文将介绍一种使用渐变纹理的Shader效果——Unlit渐变纹理Shader的实现原理和效果展示。Unlity渐变纹理Shader是一种简单的Shader,它不考虑光照效果,只通过渐变纹理来定义物体的颜色。这种Shader通常用于实现一些不需要光照的特效或简单的渲染效果,如UI元素、2D特效等

脚踏实地,实事求是。 4837

tmux + Claude Code 远程开发指南:从 WSL 配置到断线无忧

远程开发中,SSH 连接中断常导致后台任务丢失,这是困扰开发者的经典难题。tmux 作为终端复用器,通过将进程挂在常驻会话中,使其脱离 SSH 连接独立运行,从根本上解决了断线导致的任务终止问题。Claude Code 等 AI 编程代理需要长时间运行并保持交互上下文,恰好依赖这种会话持久化能力。结合 Windows Subsystem for Linux 提供类 Unix 环境,开发者可在 Windows 上实现稳定的远程开发工作流。本文将完整介绍从 WSL 环境配置、tmux 会话管理,到与 Claud

weixin_30423065的博客 348

智能车竞赛循迹控制:基于状态机的直道、弯道、十字路口处理策略

在嵌入式系统与自动控制领域,PID控制算法是实现精确运动控制的基础。其原理是通过比例、积分、微分三个环节的线性组合,对系统误差进行实时校正,从而实现对目标值的快速、稳定跟踪。这项技术的核心价值在于为各类自动控制系统提供了稳定、可靠且易于实现的解决方案,广泛应用于机器人、无人机、工业自动化等场景。在智能车循迹这类特定应用中,赛道环境复杂多变,单一的PID控制器难以应对直道、弯道、十字路口等不同赛道元素的控制需求。此时,有限状态机(FSM)作为一种高效的**决策框架**,能够根据实时感知的赛道特征(如边线曲率、

weixin_34034261的博客 282

unity 颜色渐变的shader

在 Unity 中,可以使用 Shader 来实现颜色渐变的效果。 要实现这个效果,你需要在 Unity 中创建一个新的 Shader 文件。你可以使用 Surface Shader 来简化这个过程,因为 Surface Shader 会自动为你生成颜色缓冲区和基本光照。 在 Shader 中,你需要定义一些变量来存储颜色渐变的起始颜色和终止颜色。然后,你可以使用一个叫做 "lerp" 的函数来插...

weixin_35754676的博客 3056

Windows系统下com0com虚拟串口安装与驱动签名禁用全攻略

本文详细介绍了在Windows系统下安装com0com虚拟串口工具的全过程,包括驱动签名问题的解决方法。通过禁用驱动程序强制签名,用户可以顺利安装并使用这款开源工具创建虚拟串口对,适用于软件开发测试、硬件调试等场景。文章还提供了验证虚拟串口功能的实用技巧和常见问题解决方案。

weixin_28720573的博客 387

渐变纹理Shader

来自于 shader 入门精要代码: Shader "MyShaders/RampTexture" { Properties { _Color ("Color Tint", Color) = (1,1,1,1) _RampTex ("Ramp Tex", 2D) = "white" {} _Specular ("Specul...

我知道你很急,但是路要一步步走 743

USB 3.0 高清音视频采集芯片——MS2130

MS2130 是一款 USB 3.0 高清视频和音频采集芯片,内部集成 USB3.0 Device 控制器、数据收发模块、音视频处理模块。

YOU_SeMi的博客 7864

多仓智能订单路由与动态优化方案设计

现在有很多商家会有多个仓库,并分布在不同的城市中,当用户下单后会根据商品库存及订单信息将订单分配到对应的仓库进行发货,如就近原则,本期基于多仓库设计一套订单路由方案,包含核心逻辑、规则优先级和实施方案,适用于多仓协同的订单自动分配场景

14年产品经理老兵,想把自己的经验及总结分享给大家,只讲思路及实操,不讲废话 2482

庄懂老师TA学习笔记 - 卡通渲染

我们可以看到,这个卡通渲染有三个颜色,并且调子与半兰伯特类似,所以我们只需要创建一张有三种颜色的纹理,使用半兰伯特返回的结果作为UV的U值进行RampTex的取值,并把得到的颜色赋值到模型上,最后再加上一个描边即可。 RampTex制作方法 Shader Forge版 ...

Hello优快云666的博客 840

相控阵雷达“相控”原理---多张动画示意图完美解释

很容易就能发现,相控阵雷达的天线由无数个小单元天线组成,这些小单元天线叫做“阵元”,对于有源相控阵雷达来说,每一个阵元都是独立控制的,它们既能独立发射雷达波,也能接收雷达波的回波信号。相控阵雷达可以在1秒内关机,1秒内开机,好处是,当军舰遇到依靠雷达信号进行引导的“反雷达导弹”时,可以迅速地把朝向来袭导弹方向的雷达关机,同时,其他方向的雷达保持开启。在过去,军舰上安装有不同种类的雷达,体积庞大、重不说,另一个麻烦是干扰,常常是,一种雷达工作时,另一种雷达就会受到干扰,严重的甚至不能同时工作。

muyangjun的专栏 1万+

Unity中RampTex介绍和应用: 溶解特效优化

介绍了在Unity使用RampTex来优化溶解特效的原理和实践.

木头圈 2352

BAT031:按列表名单将路径a下的文件夹批量剪切到路径b

摘要:按列表名单将路径a下的文件夹批量剪切到路径b。

qq_31762031的博客 1220

Phong光照模型

Phong光照模型

qq_44736340的博客 748

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Unity Shader实现图像渐变

Unity Shader实现图像渐变

iiiiiiimp的博客 2560

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【Unity Shader】纹理实践4.0:简单尝试渐变纹理和遮罩纹理

简单尝试Ramp纹理改变漫反射光照效果以及用纹理遮罩控制高光效果的shader学习记录。

qq_41835314的博客 1166

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Unity Shaders and Effects Cookbook (1-4) 创建 Ramp Texture(渐变纹理)控制漫反射着色

在Shader中根据光照来调节效果,会比较繁琐,所以可以直接用纹理。美术做好图之后,程序直接从纹理上取样,来模拟很多光照设置。 有颜色的这两个 Capsule 就是使用了 Ramp Texture的。 转自http://blog.youkuaiyun.com/huutu http://www.thisisgame.com.cn 1、首先来创建一张渐变纹理 打开PS CS6,新建一张图片

Hello Captain 4287

【Unity Shader】渐变纹理

原理:在渲染中使用纹理是为了定义一个物体的颜色,但后来人们发现,纹理其实可以用于存储任何表面属性。一种常见的用法就是使用渐变纹理来控制漫反射光照的结果。在之前计算漫反射光照时,我们都是使用表面法线和光照方向的点积结果与材质的反射率相乘来得到表面的漫反射光照。但有时,我们需要更加灵活地控制光照结果。

wang18236618195的博客 591

(十六)unity shader基础之——————基础纹理:下篇(渐变纹理、遮罩纹理)

一、渐变纹理 一开始我们在渲染中使用纹理是为了定义一个物体的颜色,但后来发现纹理可以用于存储任何表面属性。一种常见用法就是使用渐变纹理来控制漫反射光照的结果。在计算漫反射光照时,我们都是使用表面法线和光照方向的点积结果与材质的反射率相乘得到表面的漫反射光照。有时我们需要更加灵活的控制光照结果。 有一篇论文提出了一种基于冷到暖色调的着色技术,用来得到一种插画风格的渲染结果。使用这种技术,可以保证...

cgy56191948的博客 763

【Unity Shader入门精要 第7章】基础纹理(三)

另外一种对于纹理的使用方式是通过渐变纹理为物体提供漫反射光照效果。顾名思义,渐变纹理本身就是一张颜色渐变(可以是连续渐变,也可能是突变)的图片,这个渐变的过程模拟的就是光源从不同的角度照射物体的过程,因此对渐变纹理的采样通关不关心目标像素的位置信息,只关心光照角度。通常来讲,渐变纹理都是左右不可以互相拼接的(像上图这样)。

zhiai315的博客 510

计算机图形学(六) 绘制渐变色的线

给绘制渐变色的线,用到插值算法:传入2个颜色,一个渐变值(0~1),如果渐变值是0,就是color1,是1,就是color2, 在0~1之间就是渐变色 这里取得渐变值,就是我们拿到x最小值或者是y最小值,然后从最小值一直加到最大值,这一区间过程就用来当作渐变值得变化。如有误解,请多指出,谢谢。

weixin_41020820的博客 699

Unity Shader渐变纹理(3D动漫风格纹理)

一开始,我们在渲染中使用纹理是为了定义一个物体的颜色,但后来人们发现,纹理其实可以用于存储任何表面属性。一种常见的用法就是使用渐变纹理来控制漫反射光照的结果。在之前计算漫反射光照是,我们都是使用表面法线和光照方向的点积结果与材质的反射率相乘来得到表面漫反射效果。 ...

weixin_50617270的博客 3903

Unity Shader学习记录(9) —— 渐变纹理的实现

尽管在一开始,我们在渲染中使用纹理是为了定义一个物体的颜色,但后来人们发现,纹理其实可以用于存储任何表面属性。一种常见的用法就是使用渐变纹理来控制漫反射光照的结果。在之前计算漫反射光照时,我们都是使用表面法线和光照方向的点积结果与材质的反射率相乘来得到表面的漫反射光照。但有时,我们需要更加灵活地控制光照结果。使用这种方式,可以保证物体的轮廓线相比于之前使用的传统漫反射光照更加明显,而且能够提供多种色调变化。(现在很多卡通风格都使用了渐变纹理)实现代码pass {

weixin_45810196的博客 634
上一篇: 【编译】北京理工大学BITMINICC lab8+lab7 中间代码 & 目标代码生成
Faller_
博客等级 码龄7年 11粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值