【Unity3D Shader】学习笔记-纹理采样①

简介: 前言 纹理采样属于在片段着色器中进行,通过提供的贴图和uv坐标使用tex2D进行采样。本篇主要介绍对同一纹理多次采样然后进行混合来获得不同的效果。 [声明:本笔记系列文章的图片资源都源自百度图片搜索,如有问题联系我]一、简单重影 对同一纹理进行两次采样,采样时的UV两次坐标不一样,然后将采样的结果进行取平均得到最终的结果。

【Unity3D Shader】学习笔记-纹理采样①


前言


   纹理采样属于在片段着色器中进行,通过提供的贴图和uv坐标使用tex2D进行采样。本篇主要介绍对同一纹理多次采样然后进行混合来获得不同的效果。


  [声明:本笔记系列文章的图片资源都源自百度图片搜索,如有问题联系我]


一、简单重影


   对同一纹理进行两次采样,采样时的UV两次坐标不一样,然后将采样的结果进行取平均得到最终的结果。


fixed4 frag (v2f i) : SV_Target
{
    float2 uv1 = i.uv + float2(0.0, 0.0); 
    float2 uv2 = i.uv - float2(0.1, 0.0); //进行偏移
    fixed3 col = fixed3(0.0, 0.0, 0.0);
    col += tex2D(_MainTex, uv1).rgb;
    col += tex2D(_MainTex, uv2).rgb;
    // 这里需要取平均值
    fixed4 finalCol = fixed4(col * 0.5, 1.0);
    UNITY_APPLY_FOG(i.fogCoord, finalCol);
    return finalCol;
}


微信图片_20220424151808.png



二、色差效果(类似抖音效果)


   通过三次采样,每次采样的UV坐标都不一样,然后每次采样的结果只选1个通道进行混合得到结果。主要是进行uv偏移然后多通道重新混合得到色差效果,但其实这与维基百科介绍色差的理论是完全不对的(玄学:有一句话叫看上去是对的,那么它就是对的)。


fixed4 frag (v2f i) : SV_Target
{
    fixed2 offset_1 = fixed2(0.023, 0.023);
    fixed2 offset_2 = fixed2(0.022, 0.022);
    // 原图采样
    fixed4 col = tex2D(_MainTex, i.uv);
    // 两次对纹理进行偏移采样
    fixed4 offCol1 = tex2D(_MainTex, i.uv - offset_1);
    fixed4 offCol2 = tex2D(_MainTex, i.uv - offset_2);
    // 三次采样中的每个各取一个通道进行混合
    fixed3 blendColor = fixed3(offCol2.r, col.g, offCol1.b);
    return fixed4(blendColor, col.a);
}


微信图片_20220424151813.png


三、简单模糊(详情可参考Box Blur)


   上面两种效果就已经有一种模糊在里面,如果对同一个点的相邻位置(左右上下)各采样一次并和当前点的结果取平均,就可以获得一个简单的模糊效果。


fixed4 frag (v2f i) : SV_Target
{
    fixed3 col = fixed3(0.0, 0.0, 0.0);
    // 当前位置
    col += tex2D(_MainTex, i.uv + fixed2(0.0, 0.0)).rgb;
    // 右边
    col += tex2D(_MainTex, i.uv + fixed2(0.01, 0.0)).rgb;
    // 左边
    col += tex2D(_MainTex, i.uv + fixed2(-0.01, 0.0)).rgb;
    // 上面
    col += tex2D(_MainTex, i.uv + fixed2(0.0, 0.01)).rgb;
    // 下面
    col += tex2D(_MainTex, i.uv + fixed2(0.0, -0.01)).rgb;
    // 取均值
    fixed4 final_col = fixed4(col / 5, 1.0);
    return final_col;
}


微信图片_20220424151818.png

相关文章
|
10天前
|
图形学
【实现100个unity特效】shader实现3D物品闪光和描边效果
【实现100个unity特效】shader实现3D物品闪光和描边效果
9 0
|
10天前
|
存储 图形学
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
9 0
|
10天前
|
开发工具 图形学
【推荐100个unity插件之11】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件
【推荐100个unity插件之11】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件
9 0
|
10天前
|
图形学
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
9 0
|
10天前
|
图形学 开发者
【实现100个unity特效之1】使用Shader Graph实现动物森友会的世界弯曲效果(带源码)
【实现100个unity特效之1】使用Shader Graph实现动物森友会的世界弯曲效果(带源码)
15 0
|
2月前
|
图形学 异构计算
【Unity Shader 中Pass相关介绍_第四篇】
【Unity Shader 中Pass相关介绍_第四篇】
|
2月前
|
缓存 图形学 异构计算
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
|
2月前
|
图形学
【Unity Shader 中Pass相关介绍_第三篇】
【Unity Shader 中Pass相关介绍_第三篇】
|
2月前
|
图形学 异构计算
【Unity Shader 中Pass相关介绍_第二篇】
【Unity Shader 中Pass相关介绍_第二篇】
|
2月前
|
图形学
【Unity Shader#自定义材质面板_第一篇】
【Unity Shader#自定义材质面板_第一篇】