博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cg入门25: Fragment shader – UV动画(模糊)
阅读量:2201 次
发布时间:2019-05-03

本文共 1514 字,大约阅读时间需要 5 分钟。

疑问:偏导函数是什么?
物理意义和几何意义?
ddx():为x轴的偏导函数
ddy():为y轴的偏导函数
源代码:
Shader "Sbin/FragmentAnimShader"{	Properties	{		_MainTex ("Texture", 2D) = "white" {}	}	SubShader	{		Pass		{			CGPROGRAM			#pragma vertex vert			#pragma fragment frag			#pragma target 3.0			#include "UnityCG.cginc"			sampler2D _MainTex;			struct v2f{				float4 pos:POSITION;				float2 uv:TEXCOORD0;				float z:TEXCOORD1;			};			v2f vert (appdata_base v)			{				v2f o;				o.pos = mul(UNITY_MATRIX_MVP, v.vertex);				o.uv = v.texcoord.xy;				o.z = mul(_Object2World,v.vertex).z;				return o;			}			fixed4 frag (v2f v) : COLOR			{				float2 uv = v.uv;				//致使图片变模糊有两种方法				//方法1:通过两次叠加偏移叠加采样,使纹理变得模糊				//===================================================//				float4 color = tex2D(_MainTex,uv);//				uv.x = v.uv.x+0.01;//				color.rgb += tex2D(_MainTex,uv);////				uv.y = v.uv.y-0.01;//				color.rgb += tex2D(_MainTex,uv);////				color.rgb /=3;//因为叠加采样,不过不除以叠加的次数,最后的效果就会太亮				//===================================================				//方法2:采用偏导函数				//简单用法				//fixed4 color = tex2D(_MainTex,v.uv,fixed2(0.05,0.05),fixed2(0.01,0.01));				//优化方案:为什么上下面没有模糊?//				float dx = ddx(v.uv.x)*10;//				float2 dsdx = float2(dx,dx);//				float dy = ddy(v.uv.y)*10;//				float2 dsdy = float2(dy,dy);				//根据Z轴深度,z轴的值有个变化梯度,在同一平面偏导值为0,不同深度就会形成梯度模糊				//应用场景:就可以做到游戏场景中距离摄像机远近的点越清晰,越远的点越模糊。				float2 dsdx = ddx(v.z)*10;				float2 dsdy = ddy(v.z)*10;				fixed4 color = tex2D(_MainTex,v.uv,dsdx,dsdy);				return color;			}			ENDCG		}	}}
正常效果:
单纯和优化后模糊效果:
根据Z轴与摄像机的梯度模糊效果:
你可能感兴趣的文章
(PAT 1145) Hashing - Average Search Time (哈希表冲突处理)
查看>>
(1129) Recommendation System 排序
查看>>
PAT1090 Highest Price in Supply Chain 树DFS
查看>>
(PAT 1096) Consecutive Factors (质因子分解)
查看>>
(PAT 1019) General Palindromic Number (进制转换)
查看>>
(PAT 1073) Scientific Notation (字符串模拟题)
查看>>
(PAT 1080) Graduate Admission (排序)
查看>>
Play on Words UVA - 10129 (欧拉路径)
查看>>
mininet+floodlight搭建sdn环境并创建简答topo
查看>>
【linux】nohup和&的作用
查看>>
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【python】re模块常用方法
查看>>
剑指offer 19.二叉树的镜像
查看>>
剑指offer 20.顺时针打印矩阵
查看>>
剑指offer 21.包含min函数的栈
查看>>
剑指offer 23.从上往下打印二叉树
查看>>
剑指offer 25.二叉树中和为某一值的路径
查看>>