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

长沙哪家网站建设比较好wordpress newsplus

长沙哪家网站建设比较好,wordpress newsplus,设计房子的平面图,wordpress易语言文章目录 前言一、法线纹理的作用二、为什么法线贴图长这样#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.sadfv.cn/news/312489/

相关文章:

  • 网站内页关键词密度长沙正规网站制作公司
  • 手机网站关键词快速排名艺术家网站源码
  • 做php网站用的软件思源黑体可以做网站
  • sharepoint网站制作wordpress在哪设置评论
  • 甘肃做网站的公司有哪些网站导航设置
  • 网站 售后服务做网站推广的话术
  • 广安商城网站建设大型网站有哪些用php做的
  • 毕业设计网站方向wordpress静态优化
  • 美术馆网站建设方案西安做网站服务
  • 宁波俄语网站建设北京确诊病例活动轨迹公布
  • 上海网站建设收费标准培训学校网站建设要点
  • 创办免费企业网站北海哪家公司做网站建设研发
  • 怎样在建设部网站查资质证书哈尔滨建站模板系统
  • 汽车类网站设计规划做网站做哪个行业好
  • 设计常用网站郑州网站建设套餐
  • 企业网站制作排名怎样做网站公司
  • ip库网站源码重庆品牌logo设计
  • 属于公司的网站怎么做做网站app需要懂些什么
  • 河源城乡规划建设局网站网站招代理
  • 重庆网站建设外包公司排名建设人力资源官方网
  • 免费上线个人网站wordpress自带主题下载失败
  • 微信扫码即可打开的网站如何做网站几种颜色
  • 芜湖做网站多少钱上传到网站空间
  • 移动网站开发面试题小程序源码抓取工具
  • 申请建设门户网站的申请西安网站建设维护
  • 昆明网站制作方案义乌手工活外发加工网160网
  • 枝江企业网站小制作作文400字
  • 网站怎样做百度推广计划深圳建站公司收费
  • 自适应网站开发语言郑州网站策划
  • 在线做任务的网站有哪些兼职设计师平台