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

做房产应看的网站杭州网站建设方案优化

做房产应看的网站,杭州网站建设方案优化,web程序设计asp.net网站开发课后答案,wordpress tob随机文章本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更,有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 使用噪声上…

在这里插入图片描述
本系列为作者学习UnityShader入门精要而作的笔记,内容将包括:

  • 书本中句子照抄 + 个人批注
  • 项目源码
  • 一堆新手会犯的错误
  • 潜在的太监断更,有始无终

我的GitHub仓库

总之适用于同样开始学习Shader的同学们进行有取舍的参考。


文章目录

  • 使用噪声
  • 上节补充:smoothstep
    • 消融效果
    • 水波效果
    • 全局雾效


使用噪声

在有些时候,向规则的事物里面添加一些杂乱无章的效果,往往会有奇效。而这些杂乱无章的效果的来源就是噪声。在本章中我们将学习如何使用噪声来模拟一些特效。

上节补充:smoothstep

这篇文章很好的描述了smoothstep实现了什么样的效果。实际实现了对一个圆形范围的边缘模糊Shader实验室: smoothstep函数

消融效果

消融效果往往使用在角色死亡,地图烧毁等现象上。消融的效果往往是从不同区域开始,然后往看似随机的方向扩散,最后整个物体消失不见。

Shader

Shader "Custom/Dissolve_Copy"
{Properties{_BurnAmount ("Burn Amount", Range(0.0, 1.0)) = 0.0// _LineWidth代表了周边延申的效果线_LineWidth("Burn Line Width", Range(0.0, 10)) = 0.1_MainTex ("Base (RGB)", 2D) = "white" {}_BumpMap ("Normal Map", 2D) = "bump" {}_BurnFirstColor("Burn First Color", Color) = (1, 0, 0, 1)_BurnSecondColor("Burn Second Color", Color) = (1, 0, 0, 1)_BurnMap("Burn Map", 2D) = "white"{}}SubShader{Tags { "RenderType"="Opaque" "Queue"="Geometry"}Pass {Tags { "LightMode"="ForwardBase" }// 不要剔除背面,不然裁剪面片时会发现没有背面Cull OffCGPROGRAM#include "Lighting.cginc"#include "AutoLight.cginc"#pragma multi_compile_fwdbase#pragma vertex vert#pragma fragment fragfixed _BurnAmount;fixed _LineWidth;sampler2D _MainTex;sampler2D _BumpMap;fixed4 _BurnFirstColor;fixed4 _BurnSecondColor;sampler2D _BurnMap;float4 _MainTex_ST;float4 _BumpMap_ST;float4 _BurnMap_ST;struct a2v {float4 vertex : POSITION;float3 normal : NORMAL;float4 tangent : TANGENT;float4 texcoord : TEXCOORD0;};struct v2f {float4 pos : SV_POSITION;float2 uvMainTex : TEXCOORD0;float2 uvBumpMap : TEXCOORD1;float2 uvBurnMap : TEXCOORD2;float3 lightDir : TEXCOORD3;float3 worldPos : TEXCOORD4;SHADOW_COORDS(5)};v2f vert(a2v v) {v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uvMainTex = TRANSFORM_TEX(v.texcoord, _MainTex);o.uvBumpMap = TRANSFORM_TEX(v.texcoord, _BumpMap);o.uvBurnMap = TRANSFORM_TEX(v.texcoord, _BurnMap);TANGENT_SPACE_ROTATION;o.lightDir = mul(rotation, ObjSpaceLightDir(v.vertex)).xyz;o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;TRANSFER_SHADOW(o);return o;}fixed4 frag(v2f i) : SV_Target {// 对噪声纹理进行采样fixed3 burn = tex2D(_BurnMap, i.uvBurnMap).rgb;// 根据_BurnAmount来clip像素,保留白色去除黑色clip(burn.r - _BurnAmount);float3 tangentLightDir = normalize(i.lightDir);fixed3 tangentNormal = UnpackNormal(tex2D(_BumpMap, i.uvBumpMap));fixed3 albedo = tex2D(_MainTex, i.uvMainTex).rgb;fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * albedo;fixed3 diffuse = _LightColor0.rgb * albedo * max(0, dot(tangentNormal, tangentLightDir));// 对裁剪掉的部分进行混合颜色渲染fixed t = 1 - smoothstep(0.0, _LineWidth, burn.r - _BurnAmount);// 这一部分渲染的颜色是根据smoothstep获取的形状渲染的,// 被裁剪部分=0,因此经过smoothstep后周边模糊区域会保留,中心区域裁剪,渲染范围是裁剪部分区域 + _LineWidth// 而越靠近裁剪部分的像素渲染越接近firstColorfixed3 burnColor = lerp(_BurnFirstColor, _BurnSecondColor, t);// 深化颜色,看起来亮一点burnColor = pow(burnColor, 5);UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos);// 最终再混合光照和燃烧特效色fixed3 finalColor = lerp(ambient + diffuse * atten, burnColor, t * step(0.0001, _BurnAmount));return fixed4(finalColor, 1);}ENDCG}// Pass to render object as a shadow casterPass {Tags { "LightMode" = "ShadowCaster" }CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_shadowcaster#include "UnityCG.cginc"fixed _BurnAmount;sampler2D _BurnMap;float4 _BurnMap_ST;struct v2f {V2F_SHADOW_CASTER;float2 uvBurnMap : TEXCOORD1;};v2f vert(appdata_base v) {v2f o;TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)o.uvBurnMap = TRANSFORM_TEX(v.texcoord, _BurnMap);return o;}fixed4 frag(v2f i) : SV_Target {fixed3 burn = tex2D(_BurnMap, i.uvBurnMap).rgb;// 对阴影也需要剔除clip(burn.r - _BurnAmount);SHADOW_CASTER_FRAGMENT(i)}ENDCG}}FallBack "Diffuse"
}

在这里插入图片描述
例如火焰焚毁效果
在这里插入图片描述
发现配合不同的噪声贴图可以实现很多有意思的效果,例如扫描线重建

在这里插入图片描述

或者这样的沙化效果,总而言之只要是类似的随时间渐变效果应当都是能够使用噪声贴图实现的,只是需要充分发挥想象力


水波效果

在模拟实时水面的时候,我们往往也会使用噪声纹理作为高度图,不断修改水面的法线方向,以模拟水不断流动的效果。我们会使用和时间相关的变量来对噪声纹理进行采样,当得到法线信息后再进行正常的反射 + 折射运算,得到最终的水面波动效果

在之前我们写过一个实现了菲涅尔反射的玻璃效果,现在我们想要实现水波,自然也要使用菲涅尔反射,此外为了实现水面的波动效果,我们可以用一张噪声贴图,并不断进行偏移采样来模拟水面的随机波动。以实现波光粼粼的效果。

Shader "Custom/WaterWave_Copy"
{Properties{_Color ("Main Color", Color) = (1,1,1,1)_MainTex ("Base Tex", 2D) = "white" {}_WaveMap ("Wave Map",2D) = "bump"{}_Cubemap ("Environment Cubemap", Cube) = "_Skybox" {}_WaveXSpeed ("Wave Horizontal Speed", Range(-0.1, 0.1)) = 0.01_WaveYSpeed ("Wave Vertical Speed", Range(-0.1, 0.1)) = 0.01_Distortion ("Distortion", Range(0, 100)) = 10}SubShader{Tags { "Queue"="Transparent" "RenderType"="Opaque" }// 抓取不透明物体渲染后的缓存,并保存到_RefractionTex纹理中// 此处GrabPass在渲染水面纹理之前,因此抓取的是未渲染水面时的场景画面GrabPass { "_RefractionTex" }Pass{Tags{ "LightMode"="ForwardBase" }CGPROGRAM#include "UnityCG.cginc"#include "Lighting.cginc"#pragma multi_compile_fwdbase#pragma vertex vert#pragma fragment fragfixed4 _Color;sampler2D _MainTex;float4 _MainTex_ST;sampler2D _WaveMap;float4 _WaveMap_ST;samplerCUBE _Cubemap;fixed _WaveXSpeed;fixed _WaveYSpeed;float _Distortion;	sampler2D _RefractionTex;float4 _RefractionTex_TexelSize;struct a2v {float4 vertex : POSITION;float3 normal : NORMAL;float4 tangent : TANGENT; float4 texcoord : TEXCOORD0;};struct v2f {float4 pos : SV_POSITION;float4 scrPos : TEXCOORD0;float4 uv : TEXCOORD1;float4 TtoW0 : TEXCOORD2;  float4 TtoW1 : TEXCOORD3;  float4 TtoW2 : TEXCOORD4; };v2f vert(a2v v) {v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.scrPos = ComputeGrabScreenPos(o.pos);o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex);o.uv.zw = TRANSFORM_TEX(v.texcoord, _WaveMap);// 用于计算光照模型(菲涅尔反射)。需要用到世界空间下的切线方向float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;  fixed3 worldNormal = UnityObjectToWorldNormal(v.normal);  fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);  fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w; o.TtoW0 = float4(worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x);  o.TtoW1 = float4(worldTangent.y, worldBinormal.y, worldNormal.y, worldPos.y);  o.TtoW2 = float4(worldTangent.z, worldBinormal.z, worldNormal.z, worldPos.z);  return o;}fixed4 frag(v2f i) : SV_Target {float3 worldPos = float3(i.TtoW0.w, i.TtoW1.w, i.TtoW2.w);fixed3 viewDir = normalize(UnityWorldSpaceViewDir(worldPos));// 计算水波纹理在uv上的采样速度float2 speed = _Time.y * float2(_WaveXSpeed, _WaveYSpeed);// 对法线纹理采样并将法线纹理转换回切线空间// 此处为了模拟水波的不规则运动,bump1边对speed正方向采样,bump2对负方向采样,并将两种法线纹理采样都应用上去fixed3 bump1 = UnpackNormal(tex2D(_WaveMap, i.uv.zw + speed)).rgb;fixed3 bump2 = UnpackNormal(tex2D(_WaveMap, i.uv.zw - speed)).rgb;fixed3 bump = normalize(bump1 + bump2);// 将场景的像素与法线进行混合以实现水面波动和场景画面的颜色值的混合// _Distortion越大,水体背后的物体看起来变形程度越大float2 offset = bump.xy * _Distortion * _RefractionTex_TexelSize.xy;// 对z坐标进行相乘,以模拟深度越大,折射程度越大的效果i.scrPos.xy = offset * i.scrPos.z + i.scrPos.xy;fixed3 refrCol = tex2D( _RefractionTex, i.scrPos.xy/i.scrPos.w).rgb;// 将采样法线贴图计算的切线空间坐标变换到世界空间下bump = normalize(half3(dot(i.TtoW0.xyz, bump), dot(i.TtoW1.xyz, bump), dot(i.TtoW2.xyz, bump)));// 采样主纹理并计算菲涅尔反射fixed4 texColor = tex2D(_MainTex, i.uv.xy + speed);fixed3 reflDir = reflect(-viewDir, bump);fixed3 reflCol = texCUBE(_Cubemap, reflDir).rgb * texColor.rgb * _Color.rgb;fixed fresnel = pow(1 - saturate(dot(viewDir, bump)), 4);fixed3 finalColor = lerp(refrCol,reflCol,fresnel);//fixed3 finalColor = reflCol * fresnel + refrCol * (1 - fresnel);return fixed4(finalColor, 1);}ENDCG}}// 不投射阴影FallBack Off
}

在这里插入图片描述

全局雾效

从代码上看来其实就是对原来的雾效后处理进行了一个噪声纹理贴图的采样。

此处就不展开了



文章转载自:
http://dinnconarcotic.bkqw.cn
http://dinncoglial.bkqw.cn
http://dinncomerrythought.bkqw.cn
http://dinncobusload.bkqw.cn
http://dinncoprussianize.bkqw.cn
http://dinncoeuglenid.bkqw.cn
http://dinncoccco.bkqw.cn
http://dinnconlf.bkqw.cn
http://dinncofrisco.bkqw.cn
http://dinncomaccabean.bkqw.cn
http://dinncopresage.bkqw.cn
http://dinncotrailership.bkqw.cn
http://dinncocontrarious.bkqw.cn
http://dinncosalutatorian.bkqw.cn
http://dinncofervent.bkqw.cn
http://dinnconewsweekly.bkqw.cn
http://dinncohumourously.bkqw.cn
http://dinncocoequal.bkqw.cn
http://dinncomara.bkqw.cn
http://dinncoceleriac.bkqw.cn
http://dinncocolourfast.bkqw.cn
http://dinncobaume.bkqw.cn
http://dinncobolan.bkqw.cn
http://dinncomicrocyte.bkqw.cn
http://dinncooutcamp.bkqw.cn
http://dinncorecuse.bkqw.cn
http://dinncohoudah.bkqw.cn
http://dinncosidestroke.bkqw.cn
http://dinncofinlet.bkqw.cn
http://dinncoultramodern.bkqw.cn
http://dinncocycloid.bkqw.cn
http://dinncodusk.bkqw.cn
http://dinncojd.bkqw.cn
http://dinncogenteelly.bkqw.cn
http://dinncoailurophile.bkqw.cn
http://dinncoplowshare.bkqw.cn
http://dinncostanchion.bkqw.cn
http://dinncociphering.bkqw.cn
http://dinncobmv.bkqw.cn
http://dinncogroovy.bkqw.cn
http://dinncoimportation.bkqw.cn
http://dinncojugate.bkqw.cn
http://dinncopsychosomatry.bkqw.cn
http://dinncobackwood.bkqw.cn
http://dinncomonte.bkqw.cn
http://dinncograndisonian.bkqw.cn
http://dinncooutcaste.bkqw.cn
http://dinncoosteoradionecrosis.bkqw.cn
http://dinncooperagoer.bkqw.cn
http://dinncomore.bkqw.cn
http://dinncomargot.bkqw.cn
http://dinncosandy.bkqw.cn
http://dinncochalicosis.bkqw.cn
http://dinncostab.bkqw.cn
http://dinncobathymetry.bkqw.cn
http://dinncoeschalot.bkqw.cn
http://dinncoleafstalk.bkqw.cn
http://dinncoburletta.bkqw.cn
http://dinncomasterful.bkqw.cn
http://dinncomig.bkqw.cn
http://dinncoregis.bkqw.cn
http://dinncocorallaceous.bkqw.cn
http://dinncolithotritize.bkqw.cn
http://dinncocodification.bkqw.cn
http://dinncoattribute.bkqw.cn
http://dinncocontinently.bkqw.cn
http://dinncoenergetic.bkqw.cn
http://dinncorevolt.bkqw.cn
http://dinncocressida.bkqw.cn
http://dinncogalanty.bkqw.cn
http://dinncobambara.bkqw.cn
http://dinncobioacoustics.bkqw.cn
http://dinncojeon.bkqw.cn
http://dinncocharqui.bkqw.cn
http://dinncoirretraceable.bkqw.cn
http://dinncooncer.bkqw.cn
http://dinncodonkeyback.bkqw.cn
http://dinncomicronucleus.bkqw.cn
http://dinnconoises.bkqw.cn
http://dinncocytotoxic.bkqw.cn
http://dinncorudeness.bkqw.cn
http://dinncophotic.bkqw.cn
http://dinncoskald.bkqw.cn
http://dinncoconcinnity.bkqw.cn
http://dinncoterrit.bkqw.cn
http://dinncoamphidiploid.bkqw.cn
http://dinncohooklet.bkqw.cn
http://dinncokalpa.bkqw.cn
http://dinncoberretta.bkqw.cn
http://dinncosaxtuba.bkqw.cn
http://dinncotarsi.bkqw.cn
http://dinncoselfdom.bkqw.cn
http://dinncohabitual.bkqw.cn
http://dinncoaliturgical.bkqw.cn
http://dinncomaintainability.bkqw.cn
http://dinncoaphorism.bkqw.cn
http://dinncomacrocytosis.bkqw.cn
http://dinncoacetophenone.bkqw.cn
http://dinncopolyspermous.bkqw.cn
http://dinncorocaille.bkqw.cn
http://www.dinnco.com/news/145349.html

相关文章:

  • 做订餐网站数据库应该有哪些表市场营销
  • 网上做调查网站有哪些凡科网
  • 做网站公司怎么样廊坊自动seo
  • 福永医院网站建设宁波seo怎么做引流推广
  • 酒店网站策划互联网营销师国家职业技能标准
  • 网站翻页功能网络营销能干什么工作
  • 做网站前端ps很重要吗国外市场网站推广公司
  • 网上做兼职做网站百度网盘app下载安装电脑版
  • 学习网站建设多少钱南京最大网站建设公司
  • 网站建设免费模版链接交换
  • 体彩网站开发如何优化培训方式
  • 做动态图网站北京网站seo公司
  • 上虞区驿亭镇新农村建设网站网站设计制作培训
  • 老李网站建设网络营销推广
  • 做任务赚钱的游戏网站广告投放推广平台
  • 招聘类网站如何做百度指数查询手机版app
  • 建设报名系统这个网站是真是假营销渠道的概念
  • 江苏集团网站建设如何创建一个平台
  • wordpress on sent okseo网络营销推广
  • 新乐网站建设seo网站排名优化价格
  • 15年做啥网站致富网站网络推广公司
  • 网站建设课程设计的引言宁波seo推广服务电话
  • 做下载类型网站怎样划算上线了建站
  • dedecms做微网站谷歌推广技巧
  • 消防有哪些网站合适做买链接官网
  • 做网站有高手没有360优化大师官方下载
  • wordpress无法打开网页如何优化seo
  • 建筑模型网站seo如何快速出排名
  • 做兼职什么网站靠谱关键词优化 搜索引擎
  • 网站突然没收录搜索推广平台有哪些