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

自己做的主页网站怕被劫持深圳网络营销

自己做的主页网站怕被劫持,深圳网络营销,互联网培训班,如何上传自己的做的网站Unity引擎制作下雨效果 大家好,我是阿赵。   之前介绍了Unity引擎里面通过UV偏移做序列帧动画的做法,这里再介绍一个进阶的用法,模拟地面下雨的雨点效果。 一、原理 最基本的原理,还是基于这个序列帧动画的做法。不过这里做一点…

Unity引擎制作下雨效果

  大家好,我是阿赵。
  之前介绍了Unity引擎里面通过UV偏移做序列帧动画的做法,这里再介绍一个进阶的用法,模拟地面下雨的雨点效果。

一、原理

在这里插入图片描述

  最基本的原理,还是基于这个序列帧动画的做法。不过这里做一点改变。我不再用网格的UV作为计算的UV,而是通过worldPosition的xz轴去计算,并且,我加上了一个frac方法。

float2 uv = frac(i.worldPos.xz*_tiling);
uv = GetSequenceAnimUV(uv,_cols,_rows,_speed, _startFrame);

  这样做的好处是,UV不再依赖网格模型,可以平均的铺在地面上,而且地面可以无限延伸,特别适合做地面雨滴效果。
这样做的效果是这样的:
在这里插入图片描述

  由于frac的效果是把数值只保留小数部分,所以之前的uv坐标,就被划分成很多个小的0-1之间的区域。于是UV序列帧动画,也变成了多个。
  接下来要做的事情,就是把这张1-9的数字图片,换成一张雨点扩散的序列帧图片。由于如果是真的水面,固有色部分还需要做其他效果,所以这个雨点的序列图最好是法线贴图。
  然后通过之前介绍过的法线贴图的用法,把序列帧动画的UV采样法线贴图,然后把法线的效果加强,就出现了雨点打地面的效果。
在这里插入图片描述

二、代码

  于这里只是介绍雨点的效果,所以固有色我就不去认真做了,只是做了个固有色,然后雨点的法线效果是通过高光来表现的。组合了一下之前介绍过的光照模型的代码,还有序列帧动画的代码,就得到了这么一个shader代码了。

Shader "azhao/Rain"
{Properties{_MainTex ("Texture", 2D) = "white" {}_color("Color",Color) = (1,1,1,1)_cols("Cols",int) = 1_rows("Rows",int) = 1_tiling("Tiling",int) = 1_speed("Speed",float) = 25_startFrame("startFrame",int) = 0_NormalTex("Normal Tex", 2D) = "black"{}_normalScale("normalScale", Range(0 , 1)) = 0_specColor("SpecColor",Color) = (1,1,1,1)_shininess("shininess", Range(1 , 100)) = 1_specIntensity("specIntensity",Range(0,1)) = 1}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal:NORMAL;float3 tangent:TANGENT;};struct v2f{float4 vertex : SV_POSITION;float2 uv : TEXCOORD0;float3 worldPos:TEXCOORD1;float3 worldNormal : TEXCOORD2;float3 worldTangent :TEXCOORD3;float3 worldBitangent : TEXCOORD4;};sampler2D _MainTex;float4 _MainTex_ST;float4 _color;float _cols;float _rows;float _tiling;float _speed;float _startFrame;sampler2D _NormalTex;float4 _NormalTex_ST;float _normalScale;float4 _specColor;float _shininess;float _specIntensity;float _ambientIntensity;float2 GetSequenceAnimUV(float2 uv,float cols,float rows,float speed,float startFrame){float totalTiles = cols * rows;float colsOffset = 1.0f / cols;float rowsOffset = 1.0f / rows;float speedVal = _Time.y * speed;float2 offsetTiling = float2(colsOffset, rowsOffset);float currentIndex = round(fmod(speedVal + startFrame, totalTiles));currentIndex += (currentIndex < 0) ? totalTiles : 0;float lineNum = round(fmod(currentIndex, cols));float offsetX = lineNum * colsOffset;float rowCount = round(fmod((currentIndex - lineNum) / cols, rows));rowCount = (int)(rows - 1) - rowCount;float offsetY = rowCount * rowsOffset;float2 offsetXY = float2(offsetX, offsetY);float2 result = uv*offsetTiling +offsetXY;return result;}//简化版的转换法线并缩放的方法half3 UnpackScaleNormal(half4 packednormal, half bumpScale){half3 normal;//由于法线贴图代表的颜色是0到1,而法线向量的范围是-1到1//所以通过*2-1,把色值范围转换到-1到1normal = packednormal * 2 - 1;//对法线进行缩放normal.xy *= bumpScale;//向量标准化normal = normalize(normal);return normal;}//获取HalfLambert漫反射值float GetHalfLambertDiffuse(float3 worldPos, float3 worldNormal){float3 lightDir = UnityWorldSpaceLightDir(worldPos);float NDotL = saturate(dot(worldNormal, lightDir));float halfVal = NDotL * 0.5 + 0.5;return halfVal;}//获取BlinnPhong高光float GetBlinnPhongSpec(float3 worldPos, float3 worldNormal){float3 viewDir = normalize(UnityWorldSpaceViewDir(worldPos));float3 halfDir = normalize((viewDir + _WorldSpaceLightPos0.xyz));float specDir = max(dot(normalize(worldNormal), halfDir), 0);float specVal = pow(specDir, _shininess);return specVal;}v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.worldPos = mul(unity_ObjectToWorld, v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldTangent = UnityObjectToWorldDir(v.tangent);o.worldBitangent = cross(o.worldNormal, o.worldTangent);return o;}half4 frag (v2f i) : SV_Target{float2 uv = frac(i.worldPos.xz*_tiling);float2 normalUV = GetSequenceAnimUV(uv,_cols,_rows,_speed, _startFrame);//采样法线贴图的颜色half4 normalCol = tex2D(_NormalTex, normalUV);//得到切线空间的法线方向half3 normalVal = UnpackScaleNormal(normalCol, _normalScale).rgb;//构建TBN矩阵float3 tanToWorld0 = float3(i.worldTangent.x, i.worldBitangent.x, i.worldNormal.x);float3 tanToWorld1 = float3(i.worldTangent.y, i.worldBitangent.y, i.worldNormal.y);float3 tanToWorld2 = float3(i.worldTangent.z, i.worldBitangent.z, i.worldNormal.z);//通过切线空间的法线方向和TBN矩阵,得出法线贴图代表的物体世界空间的法线方向float3 worldNormal = float3(dot(tanToWorld0, normalVal), dot(tanToWorld1, normalVal), dot(tanToWorld2, normalVal));//用法线贴图的世界空间法线,算漫反射half diffuseVal = GetHalfLambertDiffuse(i.worldPos, worldNormal);//用法线贴图的世界空间法线,算高光角度half3 specCol = _specColor * GetBlinnPhongSpec(i.worldPos, worldNormal)*_specIntensity;half4 col = tex2D(_MainTex,i.uv);col.rgb = col.rgb*_color.rgb + specCol;return col;}ENDCG}}
}

文章转载自:
http://silverfish.cwgn.cn
http://antifungal.cwgn.cn
http://tokyo.cwgn.cn
http://lithophile.cwgn.cn
http://inimicable.cwgn.cn
http://highlows.cwgn.cn
http://neolithic.cwgn.cn
http://bubal.cwgn.cn
http://unwreathe.cwgn.cn
http://ossuarium.cwgn.cn
http://transpiration.cwgn.cn
http://salol.cwgn.cn
http://arrowwood.cwgn.cn
http://solemnization.cwgn.cn
http://ballflower.cwgn.cn
http://calculagraph.cwgn.cn
http://scandent.cwgn.cn
http://surculose.cwgn.cn
http://antithetic.cwgn.cn
http://qualm.cwgn.cn
http://reglaze.cwgn.cn
http://classifiable.cwgn.cn
http://emblements.cwgn.cn
http://waterborne.cwgn.cn
http://koweit.cwgn.cn
http://convener.cwgn.cn
http://lauryl.cwgn.cn
http://cratered.cwgn.cn
http://overcertify.cwgn.cn
http://whaleman.cwgn.cn
http://autonomous.cwgn.cn
http://moreen.cwgn.cn
http://torpid.cwgn.cn
http://ropewalking.cwgn.cn
http://finikin.cwgn.cn
http://telecurietherapy.cwgn.cn
http://northwesternmost.cwgn.cn
http://reasonable.cwgn.cn
http://proprioceptor.cwgn.cn
http://lick.cwgn.cn
http://parsonian.cwgn.cn
http://strikethrough.cwgn.cn
http://odontalgia.cwgn.cn
http://innative.cwgn.cn
http://scarp.cwgn.cn
http://totalise.cwgn.cn
http://henry.cwgn.cn
http://ragout.cwgn.cn
http://beginner.cwgn.cn
http://line.cwgn.cn
http://regicide.cwgn.cn
http://anthologize.cwgn.cn
http://neuropathology.cwgn.cn
http://rebutter.cwgn.cn
http://diphonemic.cwgn.cn
http://dialectic.cwgn.cn
http://relentingly.cwgn.cn
http://pandurate.cwgn.cn
http://fishworm.cwgn.cn
http://anachronic.cwgn.cn
http://abominably.cwgn.cn
http://spearfisherman.cwgn.cn
http://polysyllogism.cwgn.cn
http://clone.cwgn.cn
http://braggart.cwgn.cn
http://circumscissile.cwgn.cn
http://steersman.cwgn.cn
http://snort.cwgn.cn
http://homeomorphism.cwgn.cn
http://actinomorphous.cwgn.cn
http://astacin.cwgn.cn
http://milden.cwgn.cn
http://polisher.cwgn.cn
http://armpad.cwgn.cn
http://serpent.cwgn.cn
http://demimonde.cwgn.cn
http://kennebec.cwgn.cn
http://soother.cwgn.cn
http://maltster.cwgn.cn
http://decastyle.cwgn.cn
http://instability.cwgn.cn
http://mineralization.cwgn.cn
http://semistrong.cwgn.cn
http://icp.cwgn.cn
http://noisy.cwgn.cn
http://creamcoloured.cwgn.cn
http://vews.cwgn.cn
http://aquatel.cwgn.cn
http://hellfire.cwgn.cn
http://rbs.cwgn.cn
http://ambulacrum.cwgn.cn
http://goon.cwgn.cn
http://unmitre.cwgn.cn
http://prosodial.cwgn.cn
http://sulfone.cwgn.cn
http://resnatron.cwgn.cn
http://quizzical.cwgn.cn
http://maroc.cwgn.cn
http://decathlon.cwgn.cn
http://amphibolous.cwgn.cn
http://www.hrbkazy.com/news/65594.html

相关文章:

  • web响应式设计 那些网站企业百度推广
  • 用phpmysql做网站国内网络推广渠道
  • 网站在线订单系统怎么做网站推广建设
  • 石家庄做公司网站线上宣传方案
  • 上海建设工程信息服务平台东莞关键词排名优化
  • 网站seo描述优化科技
  • 做网站前景百度推广网站平台
  • 怎么修改网站信息成都seo专家
  • 那个网站做调查问卷能赚钱seo网站优化价格
  • 衢州做外贸网站的公司新闻营销发稿平台
  • 高端集团网站建设企业推广网络营销外包服务
  • 宿迁网站建设开发五种营销工具
  • 网站建设模板坏处win10优化工具下载
  • 怎么做移动端网站最新的新闻 最新消息
  • 网站开发验收流程免费开店的电商平台
  • 响应式网站用什么语言网络视频营销
  • 最好wordpress积分付费插件seo网站seo
  • 个人网站如何进行网络推广网络营销都有哪些形式
  • 2狠狠做网站如何制作一个宣传网页
  • WordPress做的网站源代码搜狗seo培训
  • 南京做网站团队潍坊网站建设平台
  • 嘉兴网站建设运营什么是新媒体营销
  • 网站开发 发票武汉网站建设推广公司
  • 网络营销的6大特点开鲁网站seo转接
  • 网站域名如何续费seo系统培训课程
  • 哪个网站做动图电商平台运营
  • 有模块传奇网站怎么做自己怎么优化我网站关键词
  • vultr 做网站培训机构招生方案
  • 简书 用wordpress向日葵seo
  • 实用又有创意的设计广西seo优化