【UnityShader】渐变纹理

这篇博客介绍了如何在Unity中使用Shader实现渐变纹理,以增强物体漫反射光照的效果。通过将漫反射浮点值映射到渐变图上,确保物体轮廓线更加明显并实现多种色调变化。关键步骤包括设置渐变纹理的Wrap Mode为Clamp模式,避免浮点精度问题导致的错误采样。文中还提到在采样渐变纹理时可能遇到的halfLambert值超出[0, 1]范围的情况。" 112572237,10602978,创建Android TV桌面的实战经验分享,"['Android开发', 'Android TV开发', 'Java', 'Android Studio']
摘要由CSDN通过智能技术生成

基础知识

  • 使用漫反射浮点值来映射到渐变图上的某一个颜色值,最终根据灯光计算后的方向来映射整个渐变纹理到物体表面。

  • 纹理其实可以用于存储任何表面属性。一种常见的用法就是使用渐变纹理来控制漫反射光照的结果。在之前计算漫反射光照时,使用的是表面法线和光照方向的点积结果与材质漫反射率来得到表面的漫反射光照。

  • 这种技术,可以保证物体的轮廓线相比于之前使用的传统漫反射更加明显,而且能够提供多种色调变化。

  • 注意:
    需要把渐变纹理的 Wrap Mode 设置为 Clamp 模式,以防止对纹理进行采样时由于浮点数精度造成的问题。在使用 fixed2(halfLambert, halfLambert) 对渐变纹理进行采样时,虽然理论上 halfLambert 的值在[0, 1]之间,但可能会有 1.00001 这样的值出现,如果使用 repeat模式,就会舍弃整数部分,只保留小树部分,得到的是 0.00001,对应了渐变图中最左边的值,即黑色。

代码实现

Shader "Custom/s7_3"
{
    Properties
    {
        _Color("Color",color)=(1,1,1,1)
        _RampTex("Ramp Tex",2D)="white"{}
        _Specular("Specular",color)=(1,1,1,1)
        _Gloss("Gloss",Range(10,256))=100
    }
    SubShader
    {
        Tags { "RenderTy
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值