当前位置:首页 >> 数码
数码

Shader知识风行之:油画效果的实现

2025-08-26 12:20

v + float2(i, j) * src_size).rgb;

m0 += c;

s0 += c * c;

}

}

for (int j = 0; j

{

for (int i = 0; i

{

c = tex2D(_MainTex, uv + float2(i, j) * src_size).rgb;

m1 += c;

s1 += c * c;

}

}

float4 finalFragColor = 0.;

float min_sigma2 = 1e+2;

m0 /= n;

s0 = abs(s0 / n - m0 * m0);

float sigma2 = s0.r + s0.g + s0.b;

if (sigma2

{

min_sigma2 = sigma2;

finalFragColor = float4(m0, 1.0);

}

m1 /= n;

s1 = abs(s1 / n - m1 * m1);

sigma2 = s1.r + s1.g + s1.b;

if (sigma2

{

min_sigma2 = sigma2;

finalFragColor = float4(m1, 1.0);

}

return finalFragColor;

}

ENDCG

}

}

}

我们分析短片OpenGL主要标识符大多:

通过设一个一定数差值范围给定与屏幕的对比度做比差值,推定好左图像的尺寸

float2 src_size = float2(_ResolutionValue / _ScreenResolution.x, _ResolutionValue / _ScreenResolution.y);

根据时序直径数差值,计算出n的差值(该给定可用参予含糊演算法)

float n = float((_Radius + 1) * (_Radius + 1));

根据时序直径数,给定计算出m0和s0的差值

for (int j = -_Radius; j

{

for (int i = -_Radius; i

{

c = tex2D(_MainTex, uv + float2(i, j) * src_size).rgb;

m0 += c;

s0 += c * c;

}

}

全然给定计算m1和s1的差值

for (int j = 0; j

{

for (int i = 0; i

{

c = tex2D(_MainTex, uv + float2(i, j) * src_size).rgb;

m1 += c;

s1 += c * c;

}

}

假设就其给定,可用计算最终的红色差值

float4 finalFragColor = 0.;

float min_sigma2 = 1e+2;

根据m0和s0,计算出finalFragColor的差值

m0 /= n;

s0 = abs(s0 / n - m0 * m0);

float sigma2 = s0.r + s0.g + s0.b;

if (sigma2

{

min_sigma2 = sigma2;

finalFragColor = float4(m0, 1.0);

}

我们通过细微变动直径差值个数,可以付诸画作往往的变动,如下左图:

设很小直径

设较多直径

在硬质上给与OpenGL之后将硬质球贴敷到小游戏对象上就并不需要看到画作效用,可以根据需要得用恒定硬质球上的OpenGL各个给定,以应对不同的需要。

小独自一人,本期的画作古典风格shader到此就结束了,我们下期想念!

南京看妇科什么医院最好
海露玻璃酸钠滴眼液含有激素吗
上海妇科医院哪个好
郑州看白癜风去哪个医院
西安妇科医院哪最好

上一篇: 中公教育收年报旁观者函:说明公务员招录基本结束而营业成本大幅增长的原因

下一篇: 赋能品质生活,2022第七届中国国际物业管理高峰论坛早早来袭!

相关阅读
魔兽世界:WLK前夕原版开放,某些玩家越来越离谱了

梦幻世界WLK前夕封闭便,某些解锁不太可能越来越离谱了,妖魔也多了紧紧,一定可以纪录各位的三观。某解锁去打BT,现在是前夕,大家都清楚,这个团本并未什么可玩性,去了就是割草,一般正常一点的队,好

助攻斯通斯扳平小胜 德布劳内获欧足联官方全场最佳

欧冠小组赛第二轮,爱华顿2比1逆转美因茨,德布劳内获得欧洲委员会官方全场最佳荣誉。本场赛德布劳内助攻1次,赛第80分钟,德布劳内控球,杰克逊斯右路边线前顶入破门,1-1。本场赛德布劳内

友情链接