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

深圳做网站互联网服务

深圳做网站,互联网服务,大连专业手机自适应网站建设维护,网站用图怎么做文件小质量高文章目录 前言一、使用一张法线纹理#xff0c;作为水下扭曲的纹理1、在属性面板定义一个纹理#xff0c;用于传入法线贴图2、在Pass中#xff0c;定义对应的纹理和采样器3、在常量缓冲区#xff0c;申明修改 Tilling 和 Offset 的ST4、在顶点着色器#xff0c;计算得到 应… 文章目录 前言一、使用一张法线纹理作为水下扭曲的纹理1、在属性面板定义一个纹理用于传入法线贴图2、在Pass中定义对应的纹理和采样器3、在常量缓冲区申明修改 Tilling 和 Offset 的ST4、在顶点着色器计算得到 应用了 ST 和 随时间流动的UV用于纹理采样(_WaterSpeed是上篇文章中用到的)5、在片元着色器中对其进行法线纹理进行采样 二、实现水下扭曲的效果1、定义一个扰度值控制扭曲水下的扭曲程度2、在URP设置中开启抓屏3、在Pass中定义抓屏的 纹理 和 采样器4、使用线性插值后的结果进行抓屏的纹理采样5、最后与上篇文章计算得到的水的颜色混合请添加图片描述 三、最终代码 前言 在上篇文章中我们实现了水体中 和 物体接触时产生泡沫的效果。 Unity中URP实现水体效果泡沫 在这篇文章中我们在上一篇文章的基础上来实现水下扭曲的效果。 一、使用一张法线纹理作为水下扭曲的纹理 原理 Unity中Shader的UV扭曲效果的实现 1、在属性面板定义一个纹理用于传入法线贴图 _DistortTex(“DistortNormalTex”,2D) “white”{} 2、在Pass中定义对应的纹理和采样器 TEXTURE2D(_DistortTex);SAMPLER(sampler_DistortTex); 3、在常量缓冲区申明修改 Tilling 和 Offset 的ST half4 _DistortTex_ST; 4、在顶点着色器计算得到 应用了 ST 和 随时间流动的UV用于纹理采样(_WaterSpeed是上篇文章中用到的) o.uv.xy TRANSFORM_TEX(v.uv,_DistortTex)_Time.y * _WaterSpeed; 5、在片元着色器中对其进行法线纹理进行采样 half4 distortTex SAMPLE_TEXTURE2D(_DistortTex,sampler_DistortTex,i.uv.xy); 二、实现水下扭曲的效果 原理把抓取到的屏幕纹理使用进行流动扭曲 Unity中URP下抓屏的 开启 和 使用 1、定义一个扰度值控制扭曲水下的扭曲程度 屏幕UV 和 法线纹理扭曲之间线性插值 float2 distortUV lerp(screenUV,distortTex,_Distort); 2、在URP设置中开启抓屏 3、在Pass中定义抓屏的 纹理 和 采样器 TEXTURE2D(_CameraOpaqueTexture);SAMPLER(sampler_CameraOpaqueTexture); 4、使用线性插值后的结果进行抓屏的纹理采样 half4 cameraOpaqueTex SAMPLE_TEXTURE2D(_CameraOpaqueTexture,sampler_CameraOpaqueTexture,distortUV); 5、最后与上篇文章计算得到的水的颜色混合 col * cameraOpaqueTex; 三、最终代码 //水的深度 Shader MyShader/URP/P4_8 {Properties {[Header(Base)]_WaterColor1(WaterColor1,Color) (1,1,1,1)_WaterColor2(WaterColor2,Color) (1,1,1,1)_WaterSpeed(WaterSpeed,Range(0,1)) 0.1[Header(Foam)]_FoamTex(FoamTex,2D) white{} _FoamColor(FoamColor,Color) (1,1,1,1)_FoamRange(FoamRange,Range(0,5)) 1_FoamNoise(FoamNoise,Range(0,3)) 1[Header(Distort)]_DistortTex(DistortNormalTex,2D) white{}[PowerSlider(3)]_Distort(Distort,Range(0,0.5)) 0}SubShader{Tags{//告诉引擎该Shader只用于 URP 渲染管线RenderPipelineUniversalPipeline//渲染类型RenderTypeTransparent//渲染队列QueueTransparent}//Blend SrcAlpha OneMinusSrcAlphaZWrite OffPass{Name UnlitHLSLPROGRAM#pragma vertex vert#pragma fragment frag// Pragmas#pragma target 2.0// Includes#include Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlslCBUFFER_START(UnityPerMaterial)half4 _WaterColor1;half4 _WaterColor2;half _FoamRange;half _WaterSpeed;half4 _FoamColor;half _FoamNoise;half4 _FoamTex_ST;half _Distort;half4 _DistortTex_ST;CBUFFER_ENDTEXTURE2D(_CameraDepthTexture);SAMPLER(sampler_CameraDepthTexture);TEXTURE2D(_FoamTex);SAMPLER(sampler_FoamTex);TEXTURE2D(_CameraOpaqueTexture);SAMPLER(sampler_CameraOpaqueTexture);TEXTURE2D(_DistortTex);SAMPLER(sampler_DistortTex);//struct appdata//顶点着色器的输入struct Attributes{float3 positionOS : POSITION;float2 uv : TEXCOORD0;};//struct v2f//片元着色器的输入struct Varyings{float4 positionCS : SV_POSITION;float4 uv : TEXCOORD0;// xy distortUV,zw foamUVfloat4 screenPos : TEXCOORD1;float3 positionVS : TEXCOORD2;float3 positionWS : TEXCOORD3;};//v2f vert(Attributes v)//顶点着色器Varyings vert(Attributes v){Varyings o (Varyings)0;o.positionWS TransformObjectToWorld(v.positionOS);o.positionVS TransformWorldToView(o.positionWS);o.positionCS TransformWViewToHClip(o.positionVS);o.screenPos ComputeScreenPos(o.positionCS);//计算得到泡沫纹理采样需要的顶点世界空间下的坐标值的流动效果o.uv.zw o.positionWS.xz *_FoamTex_ST.xy _Time.y * _WaterSpeed;//计算得到水下扭曲纹理的流动UVo.uv.xy TRANSFORM_TEX(v.uv,_DistortTex)_Time.y * _WaterSpeed;return o;}//fixed4 frag(v2f i) : SV_TARGET//片元着色器half4 frag(Varyings i) : SV_TARGET{//1、水的深度//获取屏幕空间下的 UV 坐标float2 screenUV i.positionCS.xy / _ScreenParams.xy;half depthTex SAMPLE_TEXTURE2D(_CameraDepthTexture,sampler_CameraDepthTexture,screenUV).x;//深度图转化到观察空间下float depthScene LinearEyeDepth(depthTex,_ZBufferParams);//获取水面模型顶点在观察空间下的Z值可以在顶点着色器中对其直接进行转化得到顶点观察空间下的坐标float4 depthWater depthScene i.positionVS.z;//2、水的颜色线性插值得到水 和 接触物体的水的 颜色的过度half4 waterColor lerp(_WaterColor1,_WaterColor2,depthWater);//3、水面泡沫//对泡沫纹理进行采样(这里使用顶点世界空间下的坐标进行纹理采样防止水体缩放影响泡沫的平铺和重复方式)half4 foamTex SAMPLE_TEXTURE2D(_FoamTex,sampler_FoamTex,i.uv.zw);foamTex pow(foamTex,_FoamNoise);//这里增加一个调整深度图范围的功能half4 foamRange depthWater * _FoamRange;//使用泡沫纹理 和 泡沫范围 比较得到泡沫遮罩half4 foamMask step(foamRange,foamTex);//给泡沫加上颜色half4 foamColor foamMask * _FoamColor;half4 col foamColor waterColor;//4、水下的扭曲half4 distortTex SAMPLE_TEXTURE2D(_DistortTex,sampler_DistortTex,i.uv.xy);float2 distortUV lerp(screenUV,distortTex,_Distort);half4 cameraOpaqueTex SAMPLE_TEXTURE2D(_CameraOpaqueTexture,sampler_CameraOpaqueTexture,distortUV);col * cameraOpaqueTex;//水的高光//水的反射//水的焦散return col;}ENDHLSL}}FallBack Hidden/Shader Graph/FallbackError }
http://www.w-s-a.com/news/912285/

相关文章:

  • 网站sem托管wordpress安装无法连接数据库
  • 深圳网站建设开发公司哪家好微信小程序商家入口
  • 江门站排名优化建立什么网站赚钱
  • 科普文章在那个网站做招聘网站代做
  • 监控设备东莞网站建设游戏网站域名
  • 对商家而言网站建设的好处网址导航怎么彻底删除
  • app设计网站模板企业展厅策划设计公司有哪些
  • wordpress销售主题手机网站关键词优化
  • 怎么查一个网站是什么程序做的三亚城乡建设局网站
  • 深圳分销网站设计公司做网站一般需要多久
  • 企业网站设计代码丹东seo排名公司
  • 企业网站建设定制开发服务网站建设说课ppt
  • 大连市城乡建设局网站网站免费网站入口
  • 做暧网站网站备案ps
  • 知名网站建设公司电话长子网站建设
  • 网站建设的意义与目的建立什么船籍港
  • 广州注册公司营业执照网站建设代码优化
  • 百度网站官网马克互联网主题 wordpress
  • 网站制作 客户刁难深圳自助建站
  • 怎么去推广一个网站广东餐饮品牌设计
  • 网站代码加密了怎么做兰州最新大事
  • 现在ui做的比较好的网站去年做啥网站致富
  • 广东网站建设咨询电话好牌子网
  • 公司怎样制作网站南阳网站关键词
  • 营销型网站建设与网盟完整php网站开发
  • 网站做微信链接怎么做的石桥铺网站建设公司
  • 济南mip网站建设公司做图书馆网站模板
  • app 门户网站网站项目框架
  • 做网站视频网站备案 新闻审批号
  • 织梦网站怎么居中视频网站开发与制作