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

济南网站建设网站天津建设工程信息网密码

济南网站建设网站,天津建设工程信息网密码,今天的新闻内容摘抄30字,杭州房价文章目录 前言一、法线纹理的作用二、为什么法线贴图长这样#xff1f;#xff08;蓝色#xff09;三、法线贴图能使纹理采样时#xff0c;进行偏移采样四、在Shader中使用法线贴图1、在属性面板定义一个变量来接收法线贴图2、在使用前声明 _NormalTex3、在片元着色器中蓝色三、法线贴图能使纹理采样时进行偏移采样四、在Shader中使用法线贴图1、在属性面板定义一个变量来接收法线贴图2、在使用前声明 _NormalTex3、在片元着色器中对法线贴图进行纹理采样使用4、法线贴图采样后用来替换Lermbert光照模型中的法线5、把模型换成方块会发现一个Bug 前言 Unity中Shader法线贴图 一、法线纹理的作用 为了给几何物体添加细节 如果不使用法线贴图我们在做一些凹凸不平的模型时就需要在建模的时候给模型建出凹凸不平的效果。但是这样的话就需要很多的面来达到效果这是极其消耗性能的。 二、为什么法线贴图长这样蓝色 法线贴图是模拟几何表面的空间感的信息即储存的是 xyz 三个轴向上的偏移数据而z轴表示的就是几何表面的高度信息当存储成一张贴图时会将 xyz 变换为 RGB而 xyz 的取值范围是(-1,1)所以需要使用简单的算法 xyz * 0.5 0.5 来变换到 (0,1) 间通常情况下 xyz (0,0,1) 转化为 RGB (0.5,0.5,1) RGB (0.5,0.5,1) 时的颜色如下 三、法线贴图能使纹理采样时进行偏移采样 四、在Shader中使用法线贴图 我们继续使用上一篇文章的Shader来继续测试 Unity中Shader立方体纹理Cubemap 1、在属性面板定义一个变量来接收法线贴图 [Normal]_NormalTex(“NormalTex”,2D) “bump” {} [Normal]专门用来限制纹理类型的当纹理类型不是法线贴图时会给出警告“bump” : 默认的法线贴图颜色 这是我用来测试的法线贴图 2、在使用前声明 _NormalTex sampler2D _NormalTex; 3、在片元着色器中对法线贴图进行纹理采样使用 fixed3 normalTex UnpackNormal(tex2D(_NormalTex,i.uv)); UnpackNormal(half4 XX);该函数用来对法线贴图采样后进行转化处理。 这里输出看一下效果 4、法线贴图采样后用来替换Lermbert光照模型中的法线 Unity中Shader的Lambert光照的实现 //法线纹理 fixed3 normalTex UnpackNormal(tex2D(_NormalTex,i.uv)); //max(0,dot(N,L)) fixed3 N1 normalize(normalTex); fixed3 L _WorldSpaceLightPos0.xyz; return max(0,dot(N1,L)); 看一下现在的效果已经可以受光照的影响了 测试代码 //纹理的多级渐远 Mipmap //纹理的环绕方式 Shader MyShader/P2_1_6 {Properties{_MainTex (Texture, 2D) white {}[KeywordEnum (Repeat,Clamp)]_WrapMode(WrapMode,int) 0[IntRange]_Mipmap (Mipmap,Range(0,10)) 0//法线贴图[Normal]_NormalTex(NormalTex,2D) bump {}//在属性面板定义立方体纹理_CubeMap(CubeMap,Cube) white {}}SubShader{Tags { RenderTypeOpaque }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma shader_feature _WRAPMODE_REPEAT _WRAPMODE_CLAMP#include UnityCG.cgincstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;half3 normal : NORMAL;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;float3 localPos : TEXCOORD1;float3 worldPos : TEXCOORD2;half3 worldNormal : NORMAL;};sampler2D _MainTex;float4 _MainTex_ST;half _Mipmap;samplerCUBE _CubeMap;sampler2D _NormalTex;v2f vert (appdata v){v2f o;o.vertex UnityObjectToClipPos(v.vertex);o.uv TRANSFORM_TEX(v.uv, _MainTex);o.localPos v.vertex.xyz;o.worldPos mul(unity_ObjectToWorld,v.vertex);o.worldNormal UnityObjectToWorldNormal(v.normal);return o;}fixed4 frag (v2f i) : SV_Target{//WrapMode#if _WRAPMODE_REPEATi.uv frac(i.uv);#elif _WRAPMODE_CLAMP//法一://i.uv clamp(i.uv,0,1);//法二:i.uv saturate(i.uv);#endiffloat4 uvMipmap fixed4(i.uv,0,_Mipmap);fixed4 col tex2Dlod(_MainTex, uvMipmap);//法线纹理fixed3 normalTex UnpackNormal(tex2D(_NormalTex,i.uv));//max(0,dot(N,L))fixed3 N1 normalize(normalTex);fixed3 L _WorldSpaceLightPos0.xyz;return max(0,dot(N1,L));return fixed4(normalTex,1);//CubeMapfixed4 cubemap texCUBE(_CubeMap,i.localPos);//V,N,Rfixed3 V normalize(i.worldPos - _WorldSpaceCameraPos);fixed3 N normalize(i.worldNormal);fixed3 R reflect(V,N);cubemap texCUBE(_CubeMap,R);return cubemap;return col;}ENDCG}} } 5、把模型换成方块会发现一个Bug 部分面是符合法线贴图的凹凸的但是部分面会与法线贴图的凹凸完全相反 原因 这里采样使用的是世界空间的坐标 而我们纹理在制作时使用的是切线空间下的坐标所以纹理采样会出错。 我们在下篇文章中解决 Unity中Shader法线贴图下理论篇
http://www.zqtcl.cn/news/87474/

相关文章:

  • 网站首页开发收费wordpress 段落
  • 网站建设最新技术及发展趋势桓台网站制作
  • 珠海市研发网站建设重庆做seo网站优化选择哪家
  • 四川省建设厅的注册中心网站线上推广方式有哪些渠道
  • 建设官方网站意义网站开发转移合同
  • 山西集团网站建设河北手机网站建设
  • 泰安营销型网站建设网站建设话术分析
  • 手机上怎么做投票网站免费网站申请注册
  • 文案撰写网站国家时事新闻2021最新
  • 建设部网站官网 取消八大员惠城网站设计
  • 东莞企创做网站怎么样事业单位 网络网站建设
  • 贵阳网站建设kuhugz帮我做网站推广
  • 网站建设的实践目的大型社区网站开发文档
  • 在网站挂广告一个月多少钱高校信息公开网站建设
  • ps如何做网站网站开发女生
  • 哪种技术做网站容易论文答辩网站建设素材使用应该注意什么
  • 深圳 网站建设培训学校wordpress获取相关文章
  • 技术支持 中山网站建设电商网站建设属于研发费用吗
  • 江西网站建设与推广wordpress 添加图标
  • 360网站兼容模式网站不收录的技术原因
  • 内部网站建设、萤火虫网站建设优化
  • 论坛网站 备案养殖公司起名字大全免费
  • 网站app生成器windows更新wordpress
  • 不是网站建设必须经历的过程秦皇岛网站开发公司
  • 张家界搜索引擎优化seo页面代码优化
  • 网站推广计划包括哪些网络app制作网站有哪些内容
  • 龙游住房和城乡建设局网站重庆找做墩子网站
  • 河北省住房和城乡建设厅的网站趣丁号友情链接
  • 网站设计的布局中国展厅设计公司排名
  • 深圳网站建设 外包合作做企业网站的广告词