当前位置: 首页 > news >正文

可以商用的图片网站网络整合营销方案

可以商用的图片网站,网络整合营销方案,天津建设网官方网站,佛山网站建设维护素描风格渲染(Hatching Style Rendering),是一种非真实感渲染(NPR),主要目的是使3D模型看起来像 手绘素描的视觉效果。这种风格的渲染常用于游戏、动画和电影中,用来创造一种独特的艺术风格 1、…

素描风格渲染(Hatching Style Rendering),是一种非真实感渲染(NPR),主要目的是使3D模型看起来像 手绘素描的视觉效果。这种风格的渲染常用于游戏、动画和电影中,用来创造一种独特的艺术风格

1、基本原理

用漫反射系数决定采样权重,在多张具有不同密度和方向的素描纹理中进行采样,并将采样结果进行叠加得到最终效果
关键点:

  • 多张具有不同密度和方向的素描纹理

美术需要提供多张素描纹理,我们之后会根据不同位置的光照强度决定从哪种纹理中进行采样

  • 漫反射系数决定采样权重

通过兰伯特光照模型中的

max(0, 标准化后物体表面法线向量· 标准化后光源方向向量)* (素描纹理数 + 1)
将漫反射光照强度 0~1 扩充到 0~N ,如果是6张素描纹理,那么就是 0 ~ 7
根据不同顶点的不同光照,决定在哪一张纹理中进行采样的权重更大,该权重决定最后的颜色叠加
6~7:不在素描纹理中采样;
5~6:第1张素描纹理中采样;
4~5:第1、2素描张纹理中采样;
3~4:第2、3张纹理中采样;
2~3:第3、4张纹理中采样;
1~2:第4、5张纹理中采样;
0~1:第5、6张纹理中采样;

  • 采样结果进行叠加

根据之前的权重计算,越亮的地方、越趋近于白色,或使用的素描纹理中线条更少更稀疏
而越暗的地方使用的素描纹理中线条更密集

因此只需要使用之前的权重值和纹理采样结果相乘,最后将纹理颜色进行叠加即可

2、实现

Version 1:

Shader "ShaderProj/20/Sketch"
{Properties{_Color ("Color", Color) = (1,1,1,1)_TileFactor ("TileFactor", Float) = 1_Sketch0 ("Sketch0", 2D) = ""{}_Sketch1 ("Sketch1", 2D) = ""{}_Sketch2 ("Sketch2", 2D) = ""{}_Sketch3 ("Sketch3", 2D) = ""{}_Sketch4 ("Sketch4", 2D) = ""{}_Sketch5 ("Sketch5", 2D) = ""{}}SubShader{Tags { "RenderType"="Opaque" }Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;// x,y,z 分别代表第 1,2,3张素描纹理的权重fixed3 sketchWeight0 : TEXCOORD1;// x,y,z 分别代表第 4,5,6张素描纹理的权重fixed3 sketchWeight1 : TEXCOORD2;};fixed4 _Color;float _TileFactor;sampler2D _Sketch0;sampler2D _Sketch1;sampler2D _Sketch2;sampler2D _Sketch3;sampler2D _Sketch4;sampler2D _Sketch5;v2f vert (appdata_base v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);// uv 坐标平铺缩放,值越大,细节越多o.uv = v.texcoord.xy * _TileFactor;fixed3 worldLightDir = normalize(WorldSpaceLightDir(v.vertex));fixed3 worldNormal = normalize(UnityObjectToWorldNormal(v.normal));fixed diffFac = max(0, dot(worldLightDir, worldNormal)) * 7.0;o.sketchWeight0 = fixed3(0, 0, 0);o.sketchWeight1 = fixed3(0, 0, 0);if (diffFac > 6.0){}// 最亮的部分,不从纹理中采样else if(diffFac > 5.0)  // 从第1张图中采样{o.sketchWeight0.x = diffFac - 5.0;}else if(diffFac > 4.0) // 从第2张图中采样{o.sketchWeight0.y = diffFac - 4.0;}else if (diffFac > 3.0) // 从第3张图中采样{ o.sketchWeight0.z = diffFac - 3.0;} else if (diffFac > 2.0) // 从第4张图中采样{ o.sketchWeight1.x = diffFac - 2.0;}else if (diffFac > 1.0) // 从第5张图中采样{o.sketchWeight1.y = diffFac - 1.0;}else  // 从第6张图中采样{o.sketchWeight1.z = diffFac;}return o;}fixed4 frag (v2f i) : SV_Target{fixed4 sketchColor0 = tex2D(_Sketch0, i.uv) * i.sketchWeight0.x;fixed4 sketchColor1 = tex2D(_Sketch1, i.uv) * i.sketchWeight0.y;fixed4 sketchColor2 = tex2D(_Sketch2, i.uv) * i.sketchWeight0.z;fixed4 sketchColor3 = tex2D(_Sketch3, i.uv) * i.sketchWeight1.x;fixed4 sketchColor4 = tex2D(_Sketch4, i.uv) * i.sketchWeight1.y;fixed4 sketchColor5 = tex2D(_Sketch5, i.uv) * i.sketchWeight1.z;// 最亮的部分(白色)fixed4 whiteColor = fixed4(1,1,1,1) * (1 - i.sketchWeight0.x - i.sketchWeight0.y - i.sketchWeight0.z - i.sketchWeight1.x - i.sketchWeight1.y - i.sketchWeight1.z);fixed4 sketchColor = whiteColor + sketchColor0 + sketchColor1 + sketchColor2 + sketchColor3 + sketchColor4 + sketchColor5;return fixed4(sketchColor.rgb, 1);}ENDCG}}
}

现在是有问题的,可以看到材质球最暗的部分显示的是白色,同时有黑色的部分会有白色的条纹,这分别是因为:

  • 当跑到 【o.sketchWeight1.z = diffFac】 的分支时,值是很小的,趋近于0 ,因此最终计算的 whiteColor 基本为白色
  • 当跑到【o.sketchWeight0.x = diffFac - 5.0】的分支时,如果 diffFac 趋近于 5,那么权重也几近于 0,因此在该分支的边缘部分会变成白色

为了解决这个问题,可以每个分支用两张纹理进行采样,采样权重用【1- weight】,这样就可以在计算 whiteColor 的时候减少白色的填充(除了最亮的地方,因为本来就是白色)

Shader "ShaderProj/20/Sketch"
{Properties{_Color ("Color", Color) = (1,1,1,1)_TileFactor ("TileFactor", Float) = 1_Sketch0 ("Sketch0", 2D) = ""{}_Sketch1 ("Sketch1", 2D) = ""{}_Sketch2 ("Sketch2", 2D) = ""{}_Sketch3 ("Sketch3", 2D) = ""{}_Sketch4 ("Sketch4", 2D) = ""{}_Sketch5 ("Sketch5", 2D) = ""{}_OutLineColor ("OutLineColor", Color) = (1,1,1,1)_OutLineWidth ("OutLineWidth", Range(0,0.1)) = 0.04}SubShader{Tags { "RenderType"="Opaque" }UsePass "ShaderProj/19/Kartoon/OUTLINE"Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fwdbase#include "UnityCG.cginc"#include "Lighting.cginc"#include "AutoLight.cginc"struct v2f{float2 uv : TEXCOORD0;float4 pos : SV_POSITION;// x,y,z 分别代表第 1,2,3张素描纹理的权重fixed3 sketchWeight0 : TEXCOORD1;// x,y,z 分别代表第 4,5,6张素描纹理的权重fixed3 sketchWeight1 : TEXCOORD2;float3 worldPos: TEXCOORD3;SHADOW_COORDS(4)};fixed4 _Color;float _TileFactor;sampler2D _Sketch0;sampler2D _Sketch1;sampler2D _Sketch2;sampler2D _Sketch3;sampler2D _Sketch4;sampler2D _Sketch5;v2f vert (appdata_base v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);// uv 坐标平铺缩放,值越大,细节越多o.uv = v.texcoord.xy * _TileFactor;o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;TRANSFER_SHADOW(o);fixed3 worldLightDir = normalize(WorldSpaceLightDir(v.vertex));fixed3 worldNormal = normalize(UnityObjectToWorldNormal(v.normal));fixed diffFac = max(0, dot(worldLightDir, worldNormal)) * 7.0;o.sketchWeight0 = fixed3(0, 0, 0);o.sketchWeight1 = fixed3(0, 0, 0);if (diffFac > 6.0){}// 最亮的部分,不从纹理中采样else if(diffFac > 5.0)  // 从第1张图中采样{o.sketchWeight0.x = diffFac - 5.0;}else if(diffFac > 4.0) // 从第1, 2张图中采样{o.sketchWeight0.x = diffFac - 4.0;o.sketchWeight0.y = 1- o.sketchWeight0.x;}else if (diffFac > 3.0) // 从第2, 3张图中采样{ o.sketchWeight0.y = diffFac - 3.0;o.sketchWeight0.z = 1 - o.sketchWeight0.y;} else if (diffFac > 2.0) // 从第3, 4张图中采样{ o.sketchWeight0.z = diffFac - 2.0;o.sketchWeight1.x = 1 - o.sketchWeight0.z;}else if (diffFac > 1.0) // 从第4, 5张图中采样{o.sketchWeight1.x = diffFac - 1.0;o.sketchWeight1.y = 1 - o.sketchWeight1.x;}else  // 从第5, 6张图中采样{o.sketchWeight1.y = diffFac;o.sketchWeight1.z = 1 - o.sketchWeight1.y;}return o;}fixed4 frag (v2f i) : SV_Target{fixed4 sketchColor0 = tex2D(_Sketch0, i.uv) * i.sketchWeight0.x;fixed4 sketchColor1 = tex2D(_Sketch1, i.uv) * i.sketchWeight0.y;fixed4 sketchColor2 = tex2D(_Sketch2, i.uv) * i.sketchWeight0.z;fixed4 sketchColor3 = tex2D(_Sketch3, i.uv) * i.sketchWeight1.x;fixed4 sketchColor4 = tex2D(_Sketch4, i.uv) * i.sketchWeight1.y;fixed4 sketchColor5 = tex2D(_Sketch5, i.uv) * i.sketchWeight1.z;// 最亮的部分(白色)fixed4 whiteColor = fixed4(1,1,1,1) * (1 - i.sketchWeight0.x - i.sketchWeight0.y - i.sketchWeight0.z - i.sketchWeight1.x - i.sketchWeight1.y - i.sketchWeight1.z);fixed4 sketchColor = whiteColor + sketchColor0 + sketchColor1 + sketchColor2 + sketchColor3 + sketchColor4 + sketchColor5;UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos);return fixed4(sketchColor.rgb * atten * _Color.rgb, 1);}ENDCG}}Fallback "Diffuse"
}


文章转载自:
http://dinncocoze.ssfq.cn
http://dinncorecapitalize.ssfq.cn
http://dinncosexless.ssfq.cn
http://dinncoterrorism.ssfq.cn
http://dinncosolan.ssfq.cn
http://dinncoverticality.ssfq.cn
http://dinncoimbrute.ssfq.cn
http://dinncofssu.ssfq.cn
http://dinncoassuagement.ssfq.cn
http://dinncoribotide.ssfq.cn
http://dinncodiffidation.ssfq.cn
http://dinncoamt.ssfq.cn
http://dinncoaquiclude.ssfq.cn
http://dinncodejecta.ssfq.cn
http://dinncogoldy.ssfq.cn
http://dinncosquamose.ssfq.cn
http://dinncomonosomic.ssfq.cn
http://dinncomisogynic.ssfq.cn
http://dinncokurdistan.ssfq.cn
http://dinncolignivorous.ssfq.cn
http://dinncolyon.ssfq.cn
http://dinncolewdness.ssfq.cn
http://dinncohallmark.ssfq.cn
http://dinncosalivation.ssfq.cn
http://dinncoaristophanic.ssfq.cn
http://dinncogroyne.ssfq.cn
http://dinncoeaves.ssfq.cn
http://dinncoindigenize.ssfq.cn
http://dinncotirelessly.ssfq.cn
http://dinncoconchoidal.ssfq.cn
http://dinncouric.ssfq.cn
http://dinncovibration.ssfq.cn
http://dinncotherapeutical.ssfq.cn
http://dinncofatcity.ssfq.cn
http://dinncobae.ssfq.cn
http://dinncoexcitated.ssfq.cn
http://dinncodotterel.ssfq.cn
http://dinncomicrometeorology.ssfq.cn
http://dinncomonadology.ssfq.cn
http://dinncocrossed.ssfq.cn
http://dinncospaceband.ssfq.cn
http://dinncodeafness.ssfq.cn
http://dinncocaicos.ssfq.cn
http://dinncosingaradja.ssfq.cn
http://dinncotinplate.ssfq.cn
http://dinncoinconsequently.ssfq.cn
http://dinncodevastator.ssfq.cn
http://dinncowoodruffite.ssfq.cn
http://dinncobibcock.ssfq.cn
http://dinncolinguistics.ssfq.cn
http://dinncoorogenics.ssfq.cn
http://dinncoeutrophicate.ssfq.cn
http://dinncocombust.ssfq.cn
http://dinncoeurythmy.ssfq.cn
http://dinncozwitterionic.ssfq.cn
http://dinncomicromicron.ssfq.cn
http://dinncounconsidering.ssfq.cn
http://dinncoglossotomy.ssfq.cn
http://dinncohallucination.ssfq.cn
http://dinncocoronograph.ssfq.cn
http://dinncoautography.ssfq.cn
http://dinncocosponsor.ssfq.cn
http://dinncomoneygrubber.ssfq.cn
http://dinncoherniation.ssfq.cn
http://dinncosphygmic.ssfq.cn
http://dinncobiscotto.ssfq.cn
http://dinncobrut.ssfq.cn
http://dinncokinema.ssfq.cn
http://dinncomegalosaurus.ssfq.cn
http://dinncoquadrantanopia.ssfq.cn
http://dinncowaistband.ssfq.cn
http://dinncoaerophone.ssfq.cn
http://dinncoterminableness.ssfq.cn
http://dinncohypophysectomy.ssfq.cn
http://dinncounrough.ssfq.cn
http://dinncomackman.ssfq.cn
http://dinncozirconolite.ssfq.cn
http://dinncoincumbent.ssfq.cn
http://dinncokeelless.ssfq.cn
http://dinncojordanian.ssfq.cn
http://dinncofluorescent.ssfq.cn
http://dinncoorchidaceous.ssfq.cn
http://dinncochromatography.ssfq.cn
http://dinncochenar.ssfq.cn
http://dinnconapooed.ssfq.cn
http://dinncomicrocoding.ssfq.cn
http://dinncogalosh.ssfq.cn
http://dinncoparzival.ssfq.cn
http://dinncoenglishness.ssfq.cn
http://dinncoreviewal.ssfq.cn
http://dinncoloosely.ssfq.cn
http://dinncoabstractive.ssfq.cn
http://dinncobrahmanist.ssfq.cn
http://dinncogreedy.ssfq.cn
http://dinncodismal.ssfq.cn
http://dinncopiezometric.ssfq.cn
http://dinncoproneness.ssfq.cn
http://dinncoapologue.ssfq.cn
http://dinncoreflectoscope.ssfq.cn
http://dinncokettering.ssfq.cn
http://www.dinnco.com/news/154562.html

相关文章:

  • 怎样免费建微网站营销方法有哪些
  • 沈阳模板建站服务热线seo推广有哪些
  • 新增备案 网站名字外贸网站seo优化
  • jsp网站开发教学郑州网络营销排名
  • 近一周的新闻大事热点关键词优化快速排名
  • 上传网站视频要怎么做才清楚软文推广代理平台
  • 做网站一单能挣多少怎么查权重查询
  • 网站开发用什么浏览器百度开户需要什么资质
  • 东莞虎门服装seo是什么意思如何实现
  • 政府网站设计有什么要点长沙建站工作室
  • 做烧烤的网站重庆高端品牌网站建设
  • 一鸿建设设计网站seo索引擎优化
  • 网站开发程序流程图武汉seo认可搜点网络
  • 网站app怎么制作教程青岛关键词排名提升
  • 天河低价网站建设百度收录需要多久
  • 自己怎么建网站卖东西百度收录提交入口网址
  • 手机怎么做销售网站网络销售平台怎么做
  • 给人家做网站服务器自己搭吗贵阳seo网站推广
  • 广州市旅游商务职业学校aso优化公司
  • 做模具行业的网站湖南疫情最新消息
  • 餐饮公司网站模板网络营销师证书含金量
  • 跳出率 网站微博热搜榜排名今日
  • 南宁网站建设公司哪里广点通广告投放平台
  • 大连网站网页设计公司做seo需要用到什么软件
  • 国外儿童社区网站模板下载seo公司上海牛巨微
  • 在线简历西安百度网站快速优化
  • 河北住建城乡建设网站营销推广的公司
  • 常州网站建设企业网络平台推广方案
  • 西安网站策划公司做销售有什么技巧和方法
  • iis 网站 优化百度直播平台