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

南宁专业网站建设深圳有名的品牌设计公司

南宁专业网站建设,深圳有名的品牌设计公司,空间和域名一年多少钱,百度竞价开户流程1 源码路径 Unity Shader 常量、变量、结构体、函数一般可以在 Unity Editor 安装目录下面的【Editor\Data\CGIncludes\UnityShader】目录下查看源码#xff0c;主要源码文件如下#xff1a; UnityCG.cgincUnityShaderUtilities.cgincUnityShaderVariables.cginc 2 Shader 常…1 源码路径 Unity Shader 常量、变量、结构体、函数一般可以在 Unity Editor 安装目录下面的【Editor\Data\CGIncludes\UnityShader】目录下查看源码主要源码文件如下 UnityCG.cgincUnityShaderUtilities.cgincUnityShaderVariables.cginc 2 Shader 常量 #define UNITY_PI 3.14159265359f #define UNITY_TWO_PI 6.28318530718f #define UNITY_FOUR_PI 12.56637061436f #define UNITY_INV_PI 0.31830988618f #define UNITY_INV_TWO_PI 0.15915494309f #define UNITY_INV_FOUR_PI 0.07957747155f #define UNITY_HALF_PI 1.57079632679f #define UNITY_INV_HALF_PI 0.636619772367f 3 Shader 变量 1时间变量 // Time (t time since current level load) values from Unity float4 _Time; // (t/20, t, t*2, t*3) float4 _SinTime; // sin(t/8), sin(t/4), sin(t/2), sin(t) float4 _CosTime; // cos(t/8), cos(t/4), cos(t/2), cos(t) float4 unity_DeltaTime; // dt, 1/dt, smoothdt, 1/smoothdt 2相机和光源的世界坐标 float3 _WorldSpaceCameraPos; // 相机的世界坐标 half4 _WorldSpaceLightPos0; // 光源的世界坐标 3投影参数 // x 1 or -1 (-1 if projection is flipped) // y near plane // z far plane // w 1/far plane float4 _ProjectionParams; 4屏幕参数 // x width // y height // z 1 1.0/width // w 1 1.0/height float4 _ScreenParams; 5MVP 矩阵 float4x4 UNITY_MATRIX_M, unity_ObjectToWorld; // [模型空间-世界空间]的变换矩阵M float4x4 UNITY_MATRIX_V, unity_MatrixV; // [世界空间-观察空间]的变换矩阵V float4x4 UNITY_MATRIX_P, glstate_matrix_projection; // [观察空间-裁剪空间]的变换矩阵P float4x4 UNITY_MATRIX_MV, unity_MatrixMV; // [模型空间-观察空间]的变换矩阵MV float4x4 UNITY_MATRIX_VP, unity_MatrixVP; // [世界空间-裁剪空间]的变换矩阵VP float4x4 UNITY_MATRIX_MVP, unity_MatrixMVP; // [模型空间-裁剪空间]的变换矩阵MVP float4x4 UNITY_MATRIX_I_V, unity_MatrixInvV; // V矩阵的逆矩阵 float4x4 UNITY_MATRIX_T_MV, unity_MatrixTMV; // MV矩阵的转置 float4x4 UNITY_MATRIX_IT_MV, unity_MatrixITMV; // MV矩阵的逆转矩阵 float4x4 unity_WorldToObject; // [世界空间-模型空间]的变换矩阵M说明unity_ObjectToWorld 与 unity_WorldToObject 互为逆矩阵。 4 Shader 结构体 1appdata_base struct appdata_base {float4 vertex : POSITION; // 局部坐标系下顶点坐标float3 normal : NORMAL; // 局部坐标系下法线向量float4 texcoord : TEXCOORD0; // 纹理坐标UNITY_VERTEX_INPUT_INSTANCE_ID }; 2appdata_tan struct appdata_tan {float4 vertex : POSITION; // 局部坐标系下顶点坐标float4 tangent : TANGENT; // 局部坐标系下切线向量float3 normal : NORMAL; // 局部坐标系下法线向量float4 texcoord : TEXCOORD0; // 纹理坐标UNITY_VERTEX_INPUT_INSTANCE_ID }; 3appdata_full struct appdata_full {float4 vertex : POSITION; // 局部坐标系下顶点坐标float4 tangent : TANGENT; // 局部坐标系下切线向量float3 normal : NORMAL; // 局部坐标系下法线向量float4 texcoord : TEXCOORD0; // 纹理坐标0float4 texcoord1 : TEXCOORD1; // 纹理坐标1float4 texcoord2 : TEXCOORD2; // 纹理坐标2float4 texcoord3 : TEXCOORD3; // 纹理坐标3fixed4 color : COLOR; // 顶点颜色UNITY_VERTEX_INPUT_INSTANCE_ID }; 4appdata_img struct appdata_img {float4 vertex : POSITION; // 局部坐标系下顶点坐标half2 texcoord : TEXCOORD0; // 纹理坐标UNITY_VERTEX_INPUT_INSTANCE_ID }; 5v2f_img struct v2f_img {// 作为顶点着色器输出时, pos指裁剪坐标系下的坐标; 作为片元着色器输入时, pos指屏幕坐标系下的坐标float4 pos : SV_POSITION;half2 uv : TEXCOORD0; // 纹理坐标UNITY_VERTEX_INPUT_INSTANCE_IDUNITY_VERTEX_OUTPUT_STEREO }; 说明作为顶点着色器输出时, pos指裁剪坐标系下的坐标; 作为片元着色器输入时, pos指屏幕坐标系下的坐标。 5 Shader 函数 5.1 基础函数 1数值计算  sign(x)、abs(x) // 符号、绝对值 min(a, b)、max(a, b) // 最值函数 ceil(x)、floor(x)、round(x) // 取整函数 frac(x) // 取小数部分 fmod(x, y) // 取余数 rap(x) // 倒数(1/x) sqrt(x)、pow(x) // 幂函数 exp(x)、exp2(x) // 指数函数(e^x、2^x) log(x)、log10(x)、log2(x) // 对数函数 degrees(x)、radians(x) // 角度转换函数 sin(x)、cos(x)、tan(x)、asin(x)、acos(x)、atan(x) // 三角函数 sinh(x)、cosh(x)、tanh(x) // 双曲线函数 saturate(x) // 将x约束在0和1之间, 超过边界就取边界值 clamp(x, min, max) // 将x约束在min和max之间, 超过边界就取边界值 smoothstep (min, max, x) // 平滑比例, 公式: ksaturate((x-min)/(max-min)), yk*k*(3-2*k) lerp(a, b, f) // 插值, 公式: yxf*(y-x), a、b可以是向量 2向量计算 all(vec) // 如果vec中每个分量都是非零的则返回true, 否则返回false any(vec) // 如果vec中存在一个分量是非零的则返回true, 否则返回false distance(pos1, pos2) // 计算pos1与pos2之间的距离 length(vec) // 计算向量的模长 normalize(vec) // 计算向量的单位向量 dot(vec1, vec2) // 向量点乘 cross(vec1, vec2) // 向量叉乘 reflect(i, n) // 根据入射向量和法线向量计算反射向量 3矩阵计算 mul(M, N)、mul(M, v), mul(v, M) // M*N、M*v、M*v determinant(M) // 计算矩阵的行列式 transpose(M) // 矩阵转置 4纹理计算 tex2D(sampler2D, uv_Tex) // 查询纹理坐标对应的纹理值 UnpackNormal(color) // 根据法线纹理解析法线向量 5.2 坐标和向量变换 1坐标变换 // 模型空间-观察空间 float3 UnityObjectToViewPos(float3 pos) // mul(UNITY_MATRIX_MV, float4(pos, 1.0)).xyz float3 UnityObjectToViewPos(float4 pos) // UnityObjectToViewPos(pos.xyz) // 模型空间-裁剪空间 float4 UnityObjectToClipPos(float3 pos) // mul(UNITY_MATRIX_MVP, float4(pos, 1.0)) float4 UnityObjectToClipPos(float4 pos) // UnityObjectToClipPos(pos.xyz) // 世界空间-观察空间 float3 UnityWorldToViewPos(float3 pos) // mul(UNITY_MATRIX_V, float4(pos, 1.0)).xyz // 世界空间-裁剪空间 float4 UnityWorldToClipPos(float3 pos) // mul(UNITY_MATRIX_VP, float4(pos, 1.0)) // 观察空间-裁剪空间 float4 UnityViewToClipPos(float3 pos) // mul(UNITY_MATRIX_P, float4(pos, 1.0)) 2向量变换 // 局部空间-世界空间 float3 UnityObjectToWorldDir(float3 dir) // normalize(mul((float3x3)unity_ObjectToWorld, dir)) // 世界空间-局部空间 float3 UnityWorldToObjectDir(float3 dir) // normalize(mul((float3x3)unity_WorldToObject, dir)) 3法线变换 // 局部空间-世界空间 float3 UnityObjectToWorldNormal(float3 norm) { #ifdef UNITY_ASSUME_UNIFORM_SCALING // 统一缩放(x、y、z分量缩放系数一致)return UnityObjectToWorldDir(norm); // normalize(mul((float3x3)unity_ObjectToWorld, norm)) #elsereturn normalize(mul(norm, (float3x3)unity_WorldToObject)); // mul(IT_M, norm) mul(norm, I_M) #endif } 法线由切线计算而来在局部空间中 A 点的切线向量为 v1法线向量为 n1经过模型变换矩阵 M后切线向量为 v2法线向量为 n2假设法线向量的变换矩阵为 G因此存在以下关系 Unity 中线性变换主要有平移、旋转、缩放由于向量不受平移变换影响因此对于法线向量而言只受旋转和缩放影响。 当 M 只包含旋转变换时M 是正交矩阵因此 G M当 M 只包含统一缩放变换时M k·E因此 G 1/k·E 1/(k^2)·M由于法线向量只需要方向后面会进行归一化因此可以简写 G M当 M 只包含旋转变换和统一缩放变换时G 1/(k^2)·M由于法线向量只需要方向后面会进行归一化因此可以简写 G M4其他变换 // 观察空间-裁剪空间 float2 TransformViewToProjection (float2 v) // mul((float2x2)UNITY_MATRIX_P, v) float3 TransformViewToProjection (float3 v) // mul((float3x3)UNITY_MATRIX_P, v) 5.3 计算指向相机和光源的向量  1计算顶点指向相机的向量 // _WorldSpaceCameraPos.xyz - worldPos float3 ObjSpaceViewDir(float4 v) // 输入: 局部坐标, 输出: 局部坐标 float3 WorldSpaceViewDir(float4 localPos) // 输入: 局部坐标, 输出: 世界坐标 float3 UnityWorldSpaceViewDir(float3 worldPos) // 输入: 世界坐标, 输出: 世界坐标 2计算顶点指向光源的向量 // mul(unity_WorldToObject, _WorldSpaceLightPos0).xyz - v.xyz float3 ObjSpaceLightDir(float4 v) // 输入: 局部坐标, 输出: 局部坐标 float3 WorldSpaceLightDir(float4 localPos) // 输入: 局部坐标, 输出: 世界坐标 float3 UnityWorldSpaceLightDir(float3 worldPos) // 输入: 世界坐标, 输出: 世界坐标
http://www.hkea.cn/news/14330052/

相关文章:

  • 新手织梦网建设网站wordpress 幻灯片代码在哪里设置
  • 广州网站制作设计公司保定网站建设电话
  • 网站上的文章经常修 内容对seo有影响吗wordpress清理修订
  • 免费做微信链接的网站吗ucenter整合wordpress
  • 网站建设技术经费预算厦门中科做网站总打电话来
  • 石家庄市建设局网站信息公开wordpress特定主题
  • 住房和城乡建设部执法网站网站备案在外地
  • 网站网站怎么做的手机百度助手
  • aspcms网站地图做网站是用ps还是ai
  • 呼和浩特建设厅网站首页做花藤字网站
  • 长春自助建站系统在凡科做网站编辑
  • 手机图片网站 模版网站建设方案风险分析
  • 响应网站先做电脑端wordpress主题机制
  • 鼓楼网站seo搜索引擎优化美妆企业网站模板
  • 做视频网站用哪个软件好招网络推广招聘
  • php做的网站如何盈利wordpress argo
  • 天津网站优化首页网站建设基础报告
  • 和动物做的网站吗什么叫网站索引
  • 做网站能注册账号的腾讯云新人服务器
  • 萧山网站建设如何网站开发语言
  • 地方信息网站怎么做wordpress设置ssl不成功
  • 大学高校网站建设栏目dede大气企业网站模板(一屏展示)
  • 河北省建设厅办事大厅网站大连在哪儿
  • 京东商城的网站建设网站设计的主题
  • 网站互动怎么做做属于公司的网站有什么好处
  • 网站域名备案资料广西建设职业技术学院贫困生网站
  • 天津网站建设 阿土伯百度下载2021新版安装
  • 可以建设彩票网站吗网页设计作业网站素材和效果图
  • 如何自己动手做网站网络营销产品有哪些特点
  • 百瑞网站建设冀州网站建设