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

做设计的搜素材上什么网站企业线上培训平台

做设计的搜素材上什么网站,企业线上培训平台,wordpress设置主从库,天台县建设局官方网站文章目录 前言一、解决 Pass 复用的方案方案一:使用之前的UsePass方案,把ShadowCaster的Pass提出来到一个单独的Shader中,在使用的时候直接使用 UsePass方案二:使用Fallback功能 前言 Unity中Shader的Fallback,我们在…

文章目录

  • 前言
  • 一、解决 Pass 复用的方案
    • 方案一:使用之前的UsePass方案,把ShadowCaster的Pass提出来到一个单独的Shader中,在使用的时候直接使用 UsePass
    • 方案二:使用Fallback功能


前言

Unity中Shader的Fallback,我们在上一篇中写的Shader中,ShadowCaster的Pass在很多Shader中都会用到,那么我们可以使用一些方法来使这个阴影相关的Pass直接复用

  • Unity中Shader阴影的投射
  • Unity中Shader阴影的接收

一、解决 Pass 复用的方案

方案一:使用之前的UsePass方案,把ShadowCaster的Pass提出来到一个单独的Shader中,在使用的时候直接使用 UsePass

  • Unity中Shader的Pass的复用

方案二:使用Fallback功能

使用Unity默认Fallback的Shader : Legacy Shaders/VertexLit ,其中包含了基本的光照和阴影功能(当然我们也可以自己写一个这样的Shader)

原因是:Unity在Shader中找不到正确对应的Pass时,会去Fallback的Shader中寻找对应正确的Pass来使用

我们把之前的 ShadowCaster部分删除后,Fallback该Shader看看效果(发现影子还是存在)
请添加图片描述
最终代码:

//Fallback
Shader "MyShader/P1_7_4"
{Properties{[Enum(Off,0,On,1)]_ZWrite("ZWrite",int) = 0[Enum(UnityEngine.Rendering.CompareFunction)]_ZTest("ZTest",int) = 0//使用这个标签,可以使外部暴露属性,有标题[Header(Base)][NoScaleOffset]_MainTex ("Texture", 2D) = "white" {}_Clip("Clip",Range(0,1)) = 0//使用这个标签可以 在两行暴露属性之间加 间隙[Space(10)][Header(Dissolve)]_DissolveTex("DissolveTex",2D) = "black"{}[NoScaleOffset]_RampTex("RampTex(RGB)",2D) = "black" {}}SubShader{Tags{"Queue" = "Geometry"}Blend OffCull Back/*ZWrite [_ZWrite]ZTest [_ZTest]*/Offset -1,-1UsePass "MyShader/P1_6_4/XRay"Pass{//Tags{"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag//#pragma multi_compile_fwdbase//剔除无用的变体//#pragma skip_variants DIRLIGHTMAP_COMBINED DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING LIGHTPROBE_SH SHADOWS_SHADOWMASK VERTEXLIGHT_ON//自己定义,阴影需要使用的变体#pragma multi_compile DIRECTIONAL SHADOWS_SCREEN#include "UnityCG.cginc"#include "AutoLight.cginc"sampler2D _MainTex;float _Clip;sampler2D _DissolveTex; //这个四维向量,xyzw分别表示 Tilling 和 Offset 的 xy ,命名方式 在纹理名 后加 _STfloat4 _DissolveTex_ST;//因为 在使用渐变纹理时,只使用了 渐变纹理的 u 坐标,所以把  sampler2D 换为 samplersampler _RampTex;struct appdata{float4 vertex : POSITION;float4 uv : TEXCOORD0;};//1.在v2f中添加UNITY_SHADOW_COORDS(idx),unity会自动声明一个叫_ShadowCoord的float4变量,用作阴影的采样坐标.struct v2f{float4 uv : TEXCOORD0;float4 pos : SV_POSITION;UNITY_SHADOW_COORDS(1)float4 worldPos :TEXCOORD2;};//2.在顶点着色器中添加TRANSFER_SHADOW(o),用于将上面定义的_ShadowCoord纹理采样坐标变换到相应的屏幕空间纹理坐标,为采样阴影纹理使用.v2f vert (appdata v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);//为了减少传入的值 ,所以就不创建新变量来存储,而是把 uv 改为  四维向量 来用//使用 o.uv 的 xy 来存放 原人物贴图//使用 o.uv 的 zw 来存放 噪波贴图缩放 和 偏移 后的值o.uv.xy = v.uv.xy;//o.uv.zw = v.uv * _DissolveTex_ST.xy + _DissolveTex_ST.zw;o.uv.zw = TRANSFORM_TEX(v.uv,_DissolveTex);TRANSFER_SHADOW(o)//把顶点转化到世界空间下o.worldPos = mul(unity_ObjectToWorld,v.vertex);return o;}//3.在片断着色器中添加UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos),其中atten即存储了采样后的阴影.fixed4 frag (v2f i) : SV_Target{UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos)fixed4 col = tex2D(_MainTex, i.uv.xy);//把阴影 和 纹理相乘col *= atten;//外部获取的 纹理 ,使用前都需要采样fixed4 dissolveTex = tex2D(_DissolveTex,i.uv.zw);//片段的取舍clip(dissolveTex.r -  _Clip);//进行归一化fixed4 dissolveValue = saturate((dissolveTex.r - _Clip) / (_Clip + 0.1 - _Clip));fixed4 rampTex = tex1D(_RampTex,dissolveValue.r);//col += rampTex;return col;}ENDCG}}Fallback "Legacy Shaders/VertexLit"
}
http://www.ds6.com.cn/news/34641.html

相关文章:

  • 企业网站建设免费百度app营销软件
  • 茂名建设公司网站在线外链发布工具
  • 三杰网站建设独立站seo建站系统
  • 电气营销型网站方案seo的目的是什么
  • 如何购买企业黄页网站今天最新消息
  • 青岛济南网站制作网站每天做100个外链
  • co域名哪些网站最新新闻事件今天国内大事
  • 先做网站 先备案常见的网络推广方式有哪些
  • 网站开发需求分析文档2023年免费进入b站
  • 即时设计在线设计宜昌seo
  • 网站界面设计策划书怎么做搜狗seo
  • 网站内怎么做链接百度极速版
  • 网站建设模版重庆企业免费建站
  • 网站线框图怎样做信息流广告公司一级代理
  • 网站地图如何更新win10优化大师有用吗
  • 银川哪里做网站推广形式有哪几种
  • 菏泽做网站建设找哪家电脑优化是什么意思
  • 网站开发判断是否为手机google adsense
  • 广东烟草电子商务网站国家优化防控措施
  • 奉节做网站免费关键词优化排名软件
  • 东莞网页设计师培训班网站seo优化推广
  • 一个服务器可以做两个网站网站域名ip查询
  • 那些空号检测网站是怎么做的cms建站
  • 网站开发图书管理系统成都关键词优化服务
  • 聊城质量最好网站建设竞价外包推广专业公司
  • 网站建设600元包常用的seo工具的是有哪些
  • 网站开发适合女生干吗关键词排名工具有哪些
  • 做返利网站能赚钱电脑培训学校能学什么
  • 网站四对联广告代码深圳网络优化推广公司
  • 网站做友链爱站网seo工具包