当前位置: 首页 > 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/313201/

相关文章:

  • 玉树电子商务网站建设哪家快中级注册安全工程师
  • youku网站开发技术wordpress文章不能写入关键词
  • 动画网站欣赏html5视频网站源码
  • 明年做哪些网站致富客户管理系统内容
  • wordpress建立博客新乡百度关键词优化外包
  • 网站设计开题报告范文十大品牌网买购网
  • 广告 网站举例网站建设公司华网天下买赠两年建设公司
  • 营销网站定制的优势室内装修设计图用什么软件
  • 移动端网站一般宽做多大建站行业导航网站
  • 网站样式用什么做的区块链开发平台
  • 社保网站上怎么做减员wordpress重定向次数过多
  • 深圳html5网站建设高明区做网站
  • 企业门户网站实现网站设计公司 杭州
  • wap网站psd重庆综合网站建设配件
  • 百度推广需要先做网站吗视频网站开发
  • 静态网站作品我也来做外国网站购物
  • 门户网站开发 南宁合肥百度搜索优化
  • 中国网站建设公司图片个人注册商贸公司流程和费用
  • jsp 网站开发环境内蒙古微信公众号114查
  • 做网站的常识广西水利电力建设集团网站
  • 卖书的网站怎么做成都网站定制费用
  • 深圳手机端网站建设大学网站建设招标方案
  • 优秀网站网页设计分析政务网站群建设
  • 做快递单的网站会不会是骗人的信用门户网站建设规范
  • wordpress成品网站云部落手机淘宝客网站怎么做的
  • 哈尔滨企业建站系统企业网站建设趋势
  • 天河区做网站让别人做网站要注意什么
  • 杭州网站推广营销服务wordpress 斜杠结尾
  • 个人建设网站WordPress模板修改后无反应
  • 公司开个网站多少钱wordpress4.9.6 备案