unity中如果图片打入了图集中,在shader中取到的uv坐标默认是图集中的坐标,如果需要shader做一些类似流光的效果,需要转换成常用的0-1区间的归一化uv坐标,转换方法如下:

步骤一: C#中向shader中传入图片在图集中的Rect信息和Scale信息

 Vector4 UVRect = UnityEngine.Sprites.DataUtility.GetOuterUV(spriteRenderer.sprite);Rect originRect = spriteRenderer.sprite.rect;Rect textureRect = spriteRenderer.sprite.textureRect;float scaleX = textureRect.width / originRect.width;float scaleY = textureRect.height / originRect.height;spriteRenderer.material.SetVector("_UVRect", UVRect);spriteRenderer.material.SetVector("_UVScale", new Vector4(scaleX, scaleY, 0, 0));

步骤二: shader中根据Rect信息和Scale信息换算得到归一化UV坐标:

_UVRect("UVRect", Vector) = (0, 0, 1, 1)_UVScale("UVScale", Vector) = (0, 0, 0, 0)//Shader Pass中声明变量属性float4 _UVRect;float4 _UVScale;//Fragment Shader中换算算法,换算后的IN.texcoord就是归一化后的UV坐标float2 center = (_UVRect.zw - _UVRect.xy) / 2;IN.texcoord = IN.texcoord - _UVRect.xy - center;IN.texcoord *= _UVScale;IN.texcoord += center;IN.texcoord = IN.texcoord / (_UVRect.zw - _UVRect.xy);

Unity shader图集Atlas下的UV坐标归一化转换相关推荐

  1. Unity Shader - Built-in管线下优化 multi_compile_fwdbase、multi_compile_fog 变体

    文章目录 变体过多的缺点 项目情况 #pragma multi_compile_fwdbase 和 multi_compile_fog 生存的变体(keyword) 生存的变体 变体的数量 查看编译生 ...

  2. unity shader forge右侧方法栏

    Shader Forge Main (主要) 这是您的所有其他节点最终将链接到的节点.它拥有为不同目的服务的多个输入. 以下动画图像显示所有输入及其随时间变化的行为.大部分输入会在 0 和 1(黑色和 ...

  3. 【Unity Shader】三、漫反射Diffuse Shader例子

    学习目标: 漫反射Diffuse Shader,逐顶点计算和逐像素计算. 半兰伯特(HalfLambert)光照模型. 结合材质自身的色彩(Material Color)及环境光(Ambient). ...

  4. 【备份】《Unity Shader入门精要》配图

    说明:本页面是书籍<Unity Shader入门精要>的随书彩图集锦,包含了书中所有的插图,使用时可通过图片编号进行搜索.  作者:冯乐乐  邮箱:lelefeng1992@gmail.c ...

  5. 【备忘】《Unity Shader入门精要》随书彩色插图

    转载来源:http://www.manew.com/blog-194008-42590.html <Unity Shader入门精要>随书彩色插图 <Unity Shader入门精要 ...

  6. 《Unity Shader入门精要》随书彩色插图

    说明:本页面是书籍<Unity Shader入门精要>的随书彩图集锦,包含了书中所有的插图,使用时可通过图片编号进行搜索.  作者:冯乐乐  邮箱:lelefeng1992@gmail.c ...

  7. Unity Shader入门精要第七章 基础纹理 凹凸映射之在世界空间下计算

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一.pandas是什么? 二.使用步骤 2.Unity 中的法线纹理类型 参考 前言 现在,我们来实现第二种方法,即在世界空间下计算光照 ...

  8. 【《Unity Shader入门精要》 提炼总结】(九)第九章·UV贴图纹理概念介绍单张纹理的应用Shader常见函数总结

    本文由@唐三十胖子出品,转载请注明出处.   文章链接:https://blog.csdn.net/iceSony/article/details/84587428 这篇文章将总结和提炼<Uni ...

  9. Unity Shader入门精要第四章:学习Shader 所需的数学基础--坐标空间

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一.4.6.1 为什么要使用这么多不同的坐标空间 二.4.6.3 顶点的坐标空间变换过程 4.6.4 模型空间 4.6.6 观察空间 4 ...

最新文章

  1. Oracle子查询无法使用order by如何办?
  2. 在代码中使用SqlCommand对象
  3. ORACLE 11g R2 RAC群集堆栈的关闭过程分析
  4. 别人运行的好好的R代码,到我这怎么就冲突了?
  5. day32 管道, 数据共享, 进程池, 回调函数
  6. 关注细节但不陷入细节
  7. android 原理 组合控件_Android自定义控件之组合控件
  8. 三相逆变器双pi控制器参数如何调节_电机(四)——永磁同步电机PI参数调节...
  9. 安卓优雅的svg实践绚丽效果
  10. 项目总是延期令人头疼?Tracup帮你做好项目进度管理
  11. python打开word并插入图片_Python操作word文档插入图片和表格的实例演示
  12. 中国大学MOOC C语言程序设计--第四周编程题
  13. 复制英文和中文PDF文字到word并去除回车符
  14. 超容易获得星球大战信息
  15. Vue.js使用Blob的方式实现excel表格的下载(流文件下载)
  16. 烫烫烫屯屯屯 那些事
  17. 索尼电视A90J、A80J怎么安装蚂蚁市场下载第三方软件方法
  18. opendrive网盘 一个能免费直接外链的网盘
  19. linux命令设置波特率,Linux设置串口波特率等参数
  20. Kmp算法之 求最大公共前后缀

热门文章

  1. java中date代替_Java:为什么Date构造函数不推荐,我用什么来代替?
  2. 华为云计算玉溪总经理_华为云计算(6)——FusionAccess
  3. id nfc模拟_手机NFC也可以刷ID卡门禁?无聊测试居然成功了
  4. CIKM 2021 | BH:面向Web级应用的基于二进制码的Hash Embedding
  5. 管理维护MySQL的SQL语句有哪些_MySQL常用管理SQL语句
  6. 报数退圈问题(C语言)
  7. python定时器库_Python定时器完整示例 python定时器用法举例
  8. 个人网站备案起名_郑州诚信个人商标注册电话
  9. oracle client 11.2.0.3 32位,oracle client 32位/64位下载(Oracl数据库)
  10. 『数据库』数据库的查询可不是只知道Select就可以的--关系数据库系统的查询处理