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

重庆网站建设与网络推广石家庄房产网官网

重庆网站建设与网络推广,石家庄房产网官网,宁津县建设局网站,建设用地规划许可证在哪个官方网站可以查询文章目录 前言一、在Shader中使用转化矩阵1、在顶点着色器中定义转化矩阵2、用 UNITY_NEAR_CLIP_VALUE 区分平台矩阵3、定义一个枚举用于区分当前是处于什么相机 二、我们在DirectX平台下#xff0c;看看效果1、正交相机下2、透视相机下3、最终代码 前言 在上一篇文章中… 文章目录 前言一、在Shader中使用转化矩阵1、在顶点着色器中定义转化矩阵2、用 UNITY_NEAR_CLIP_VALUE 区分平台矩阵3、定义一个枚举用于区分当前是处于什么相机 二、我们在DirectX平台下看看效果1、正交相机下2、透视相机下3、最终代码 前言 在上一篇文章中我们推导得出了 透视相机到裁剪空间的转化矩阵 Unity中Shader裁剪空间推导透视相机到裁剪空间的转化矩阵 我们在正交矩阵Shader的基础上继续测试 Unity中Shader裁剪空间推导在Shader中实现 在这篇文章中我们在Shader中使用该矩阵测试一下。 OpenGL [ 2 n w 0 0 0 0 2 n h 0 0 0 0 n f n − f 2 n f n − f 0 0 − 1 0 ] \begin{bmatrix} \frac{2n}{w} 0 0 0 \\ 0 \frac{2n}{h} 0 0\\ 0 0 \frac{nf}{n-f} \frac{2nf}{n-f}\\ 0 0 -1 0\\ \end{bmatrix} ​w2n​000​0h2n​00​00n−fnf​−1​00n−f2nf​0​ ​DirectX [ 2 n w 0 0 0 0 2 n h 0 0 0 0 n f − n n f f − n 0 0 − 1 0 ] \begin{bmatrix} \frac{2n}{w} 0 0 0 \\ 0 \frac{2n}{h} 0 0\\ 0 0 \frac{n}{f-n} \frac{nf}{f-n}\\ 0 0 -1 0\\ \end{bmatrix} ​w2n​000​0h2n​00​00f−nn​−1​00f−nnf​0​ ​ 一、在Shader中使用转化矩阵 1、在顶点着色器中定义转化矩阵 OpenGL M_clipP float4x4 ( 2n/w,0,0,0, 0,2n/h,0,0, 0,0,(nf)/(n-f),(2nf)/(n-f), 0,0,-1,0 ); DirectX M_clipP float4x4 ( 2n/w,0,0,0, 0,2n/h,0,0, 0,0,n/(f-n),(n*f)/(f-n), 0,0,-1,0 ); 2、用 UNITY_NEAR_CLIP_VALUE 区分平台矩阵 1为OpenGL-1为DirectX 3、定义一个枚举用于区分当前是处于什么相机 [Enum(OrthoGraphic,0,Perspective,1)]_CameraType(“CameraType”,Float) 0 在手动转化矩阵时使用三目运算符来决定使用哪一个矩阵 float4x4 M_clip _CameraType ? M_clipP : M_clipO; o.vertexCS mul(M_clip,float4(vertexVS,1)); 二、我们在DirectX平台下看看效果 1、正交相机下 2、透视相机下 3、最终代码 //平移变换 //缩放变换 //旋转变换四维 //视图空间矩阵 //正交相机视图空间 - 裁剪空间 Shader MyShader/URP/P3_7_6 {Properties{[Header(MainTexx)]_MainTex(MainTex,2D) white{}[Header(Transtion)]_Translate(Translate(XYZ),Vector) (0,0,0,0)_Scale(Scale(XYZ),Vector) (1,1,1,1)_Rotation(Rotation(XYZ),Vector) (0,0,0,0)[Header(View)]_ViewPos(View Pos,vector) (0,0,0,0)_ViewTarget(View Target,vector) (0,0,0,0)[Header(Camera)]_CameraParams(Size(X),Near(Y),Far(Z) Ratio(W),Vector) (0,0,0,1.777)[Enum(OrthoGraphic,0,Perspective,1)]_CameraType(CameraType,Float) 0}SubShader{Tags{PenderPipelineUniversalPipelineRenderTypeOpaqueQueueGeometry}Pass{HLSLPROGRAM#pragma vertex vert#pragma fragment frag#include Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlslstruct Attribute{float4 vertexOS : POSITION;float2 uv : TEXCOORD0;};struct Varying{float4 vertexCS : SV_POSITION;float2 uv : TEXCOORD0;};CBUFFER_START(UnityPerMaterial)float4 _Translate;float4 _Scale;float4 _Rotation;float4 _ViewPos;float4 _ViewTarget;float4 _CameraParams;float _CameraType;CBUFFER_ENDTEXTURE2D(_MainTex);SAMPLER(sampler_MainTex);Varying vert (Attribute v){Varying o;o.uv v.uv;//平移变换float4x4 M_Translate float4x4(1,0,0,_Translate.x,0,1,0,_Translate.y,0,0,1,_Translate.z,0,0,0,1);v.vertexOS mul(M_Translate,v.vertexOS);//缩放交换float4x4 M_Scale float4x4(_Scale.x,0,0,0,0,_Scale.y,0,0,0,0,_Scale.z,0,0,0,0,1);v.vertexOS mul(M_Scale,v.vertexOS);//旋转变换float4x4 M_rotateX float4x4(1,0,0,0,0,cos(_Rotation.x),sin(_Rotation.x),0,0,-sin(_Rotation.x),cos(_Rotation.x),0,0,0,0,1);float4x4 M_rotateY float4x4(cos(_Rotation.y),0,sin(_Rotation.y),0,0,1,0,0,-sin(_Rotation.y),0,cos(_Rotation.y),0,0,0,0,1);float4x4 M_rotateZ float4x4(cos(_Rotation.z),sin(_Rotation.z),0,0,-sin(_Rotation.z),cos(_Rotation.z),0,0,0,0,1,0,0,0,0,1);v.vertexOS mul(M_rotateX,v.vertexOS);v.vertexOS mul(M_rotateY,v.vertexOS);v.vertexOS mul(M_rotateZ,v.vertexOS);//观察空间矩阵推导//P_view [W_view] * P_world//P_view [V_world]^-1 * P_world//P_view [V_world]^T * P_worldfloat3 ViewZ normalize(_ViewPos.xyz - _ViewTarget.xyz);float3 ViewY float3(0,1,0);float3 ViewX cross(ViewZ,ViewY);ViewY cross(ViewX,ViewZ);float4x4 M_viewTemp float4x4(ViewX.x,ViewX.y,ViewX.z,0,ViewY.x,ViewY.y,ViewY.z,0,ViewZ.x,ViewZ.y,ViewZ.z,0,0,0,0,1);float4x4 M_viewTranslate float4x4(1,0,0,-_ViewPos.x,0,1,0,-_ViewPos.y,0,0,1,-_ViewPos.z,0,0,0,1);float4x4 M_view mul(M_viewTemp,M_viewTranslate);float3 vertexWS TransformObjectToWorld(v.vertexOS.xyz);//世界空间转化到观察空间float3 vertexVS mul(M_view,float4(vertexWS,1)).xyz;//相机参数float h _CameraParams.x * 2;float w h * _CameraParams.w;float n _CameraParams.y;float f _CameraParams.z;//正交相机投影矩阵//P_Clip [M_Clip] * P_viewfloat4x4 M_clipO;if(UNITY_NEAR_CLIP_VALUE-1){//OpenGLM_clipO float4x4(2/w,0,0,0,0,2/h,0,0,0,0,2/(n - f),(n f) / (n - f),0,0,0,1);}if(UNITY_NEAR_CLIP_VALUE1){//DirectXM_clipO float4x4(2/w,0,0,0,0,2/h,0,0,0,0,1/(f-n),f/(f-n),0,0,0,1);}//透视相机投影矩阵float4x4 M_clipP;if(UNITY_NEAR_CLIP_VALUE-1){//OpenGLM_clipP float4x4(2*n/w,0,0,0,0,2*n/h,0,0,0,0,(nf)/(n-f),(2*n*f)/(n-f),0,0,-1,0);}if(UNITY_NEAR_CLIP_VALUE1){//DirectXM_clipP float4x4(2*n/w,0,0,0,0,2*n/h,0,0,0,0,n/(f-n),(n*f)/(f-n),0,0,-1,0);}//手动将观察空间下的坐标转换到裁剪空间下float4x4 M_clip _CameraType ? M_clipP : M_clipO;o.vertexCS mul(M_clip,float4(vertexVS,1));//观察空间 转化到 齐次裁剪空间//o.vertexCS TransformWViewToHClip(vertexVS);//o.vertexCS TransformObjectToHClip(v.vertexOS.xyz);return o;}half4 frag (Varying i) : SV_Target{float4 mainTex SAMPLE_TEXTURE2D(_MainTex,sampler_MainTex,i.uv);return mainTex;}ENDHLSL}} }
http://www.hkea.cn/news/14351085/

相关文章:

  • 建立网站的基本流程wordpress评论表情不显示不出来
  • 沈阳哪里可以做网站营销wordpress完整虚拟资源下载
  • 南昌有哪些做网站的公司房产信息网预告是什么意思
  • 越城区住房和城乡建设局网站鲜花电子商务网站建设规划书
  • 宣传型企业网站设计上海电商网站开发
  • 用友公司能不能做网站建设asp 网站图标
  • 网站502 解决办法做网站电商云数据库有用吗
  • 东莞商务网站建设源码之家 网站模板
  • 分享设计的网站河北邢台做网站
  • 网站做ssl证书有风险河北省水利建设市场网站
  • 中国建设报社门户网站漳州网站建设企业
  • 平原县网站建设360全景图制作
  • 集团网站设计思路全网站开发是什么
  • 北京大兴最专业的网站建设公司贵州省交通工程建设质监局网站
  • 建设银行网站入口wordpress如何修改首页模板文件
  • 建设信用卡在线海淘网站返现资金盘网站开发公司哪里好
  • 国外手机模板网站高明铝业网站建站
  • 潍坊专业网站建设哪家便宜手机发布会
  • 网站开发需要哪些文档网站建设常用的开发语言介绍
  • 做网站看网页效果wordpress实现ajax
  • 建设网站成本wordpress黑桃锤击
  • 买过域名之前就可以做网站了吗?建筑施工特种证书查询入口官网
  • app网站公司请输入搜索关键词
  • 网站 搭建 公司专做立体化的网站
  • 郑州做旅游网站的公司深圳做网站优化工资多少
  • wordpress的网站怎么保存电商网站设计说明书
  • 导航网站开发用户文档网站建设方案书制作流程
  • 网站托管如何收费郑州移动网站建设
  • 如何入侵自己做的网站收费的网站怎么做的
  • 网站建设如何收费电商设计作品集