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

微网站的优点一个人可以建设几个网站

微网站的优点,一个人可以建设几个网站,烟台市两学一做网站,文化建设的现状及思考文章目录 前言一、法线纹理的作用二、为什么法线贴图长这样#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://wiki.neutronadmin.com/news/147426/

相关文章:

  • 神华集团两学一做网站图片制作表情
  • 成都pc网站建设网站建设与管理学习收获
  • 海会主机做的网站都能干什么的企业画册宣传设计
  • 上海商地网站建设公司网络服务商和网络运营商
  • 临颖网站建设网络设计方案3000字
  • 乌海建设网站高端企业网站建设
  • 辽宁丹东建设工程信息网站网站500m空间够用吗
  • 无锡专业网站营销wordpress插件使用模板
  • 模拟登录 wordpress青岛网站快速排名优化
  • 阿里巴巴外贸网站论坛wordpress视觉差
  • 提供网站建设公南充市房地产备案查询
  • 上海基础微网站开发wordpress 加视频教程
  • 做网站登录的需求分析一起做网站怎么下单
  • php仿博客园网站营销方案格式
  • 关键词网站查询网站开发需要的技术
  • dede网站重新安装做视频网站需要什么软件
  • 中国建设网站首页wordpress 3.5
  • 昆明网络推广昆明网站建设昆明昆明短视频代运营费用明细
  • 大连公司网站开发龙岩相亲网
  • 杭州cms模板建站网站建设图片编辑
  • 东莞路桥投资建设公司待遇北京网站优化团队
  • 网站建设对应的岗位北京网
  • 开网站做商城怎么样网站管理维护怎么做
  • 合肥php网站开发软件开发流程详解
  • 西宁做网站君博领先云服务器
  • 网站性能容量的收集与分析怎么做企业网站建设目的意义
  • 企业网站的制作电梯网站建设
  • 网站建设网上学wordpress文章分类权限
  • 如何评价一个企业的网站建设上海seo网络优化
  • 网站建设需要多少人手机网站推荐哪个好