首页 > 其他分享 >Unity Shader技巧:实现带投影机效果,有效避免边缘拉伸问题

Unity Shader技巧:实现带投影机效果,有效避免边缘拉伸问题

时间:2024-07-05 23:29:21浏览次数:19  
标签:拉伸 Color 投影 Shader 边框 边缘 Unity 投影机

这个是原始的projector 投影组件,边缘会有拉伸

经过修改shader 后边缘就没有拉伸了 (实现代码在文章最后)

这个着色器通过检查每个像素的UV坐标是否在定义的边界内,来确定是否应用黑色边框。如果UV坐标处于边缘区域,那么像素颜色会被强制设为黑色,从而在投影图像周围形成一个黑色边框,有效防止了纹理投影时可能出现的拉伸或变形现象,确保了投影效果的视觉一致性。

具体实现代码如下

Shader "Projector/ray_with_black_border"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Cookie", 2D) = "white" {}
        _BorderSize ("Border Size", Range(0, 1)) = 0.05 // 调整此值以改变边框大小,范围从0到1
    }
    SubShader
    {
        Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Tr

标签:拉伸,Color,投影,Shader,边框,边缘,Unity,投影机
From: https://blog.csdn.net/u012842807/article/details/140157926

相关文章

  • 八叉树-Unity
    八叉树八叉树简介八叉树(Octree)是一种在三维空间中进行数据组织和存储的树型数据结构。它的工作原理是将一个大的三维空间递归地分割成八个相等的小空间,每个小空间又可以继续分割成八个更小的空间,以此类推,直到达到某个预定的深度或者满足特定的终止条件(例如,空间内元素数量少于一......
  • 【Unity几种数据存储之间的区别】PlayerPrefs、Json、XML、二进制、SQLite数据存储之
    ......
  • Unity海面效果——4、法线贴图和高光
    Unity引擎制作海面效果  大家好,我是阿赵。  继续做海面效果,上次做完了漫反射颜色和水波动画,这次来做法线和高光效果。一、高光的计算  之前介绍过高光的光照模型做法,比较常用的是Blinn-Phong  所以我这里也稍微连线实现了一下  为了能看得更清楚......
  • 微信SDK与Unity的Addressables发生引用冲突的解决办法
    当我使用Unity的Addressables和微信的minigame-SDK时,会发生一个CS0433的报错,如下图所示: 关于CS0433错误,微软的官方文档中是这么描述的: 因此,根据报错信息,我揣测是Unity的Compat与mscorlib发生了重复,所以将mscorlib.dll文件全部删除了,但是问题没有得到解决,后面在一个大佬的帮......
  • unity canvas显示相机照射画面的方法
    1. 使用 Image 组件显示处理后的图像如果你的图像数据已经是一个 Texture2D 或 Sprite,你可以将它直接显示在Canvas上的 Image 组件中:创建 Sprite:将你的 Texture2D 数据转换为 Sprite,以便可以在 Image 组件中使用。publicSpriteCreateSpriteFromTexture(......
  • Unity的Package库在IDE里不显示API注释的解决方法
    当你在代码里使用Package库的API的时候,比如Addressable和Unity.Entities等等,以VisualStudio为例,鼠标放到API上,会发现不显示注释:然而按F12访问源代码,会发现代码里面是有注释的,而且对于Unity的包,注释会非常的详细:本质原因是Unity在编译这些Package的时候,没有生成XML注释文档,导......
  • CesiumJS【Basic】- #054 绘制渐变填充多边形(Entity方式)-使用shader
    文章目录绘制渐变填充多边形(Entity方式)-使用shader1目标2代码2.1main.ts绘制渐变填充多边形(Entity方式)-使用shader1目标使用Entity方式绘制绘制渐变填充多边形-使用shader2代码2.1main.tsimport*asCesiumfrom'cesium';constviewer......
  • unity 从list中获取最近的坐标 / 获取最接近的角度(数值)
    ///<summary>///从列表points中获取距离targetPoint最近的坐标///</summary>///<paramname="points"></param>///<paramname="targetPoint"></param>///<returns><......
  • Cesium 3DTiles customshader的使用-动态高度设置
    之前要编辑3DTiles 的shader来实现一些例如压平之类的操作 还需要更改源码Cesium新版本更新了3Dtiles的自定义着色器 可以直接定义两个着色器并往里面传uniform新版本添加3dtiles的方式发生了改变 原有的方式不能用了新版本必须通过fromurl函数进行异步添加即asyncfu......
  • 【Unity】HoloLens2 开发日记
    2022/1/12第一天!START!配置环境微软官方教程:练习-导入和配置资源-Learn|MicrosoftDocsWindows10SDK地址:WindowsSDK-Windows应用开发(microsoft.com)MRTK(混合现实工具包):DownloadMixedRealityFeatureToolfromOfficialMicrosoftDownloadCenter......