首页 > 其他分享 >美术生零基础转行TA中(第3天)

美术生零基础转行TA中(第3天)

时间:2024-04-01 20:30:26浏览次数:19  
标签:MATRIX 变换 生零 转行 UNITY cginc v2f 空间 TA

20240401 学习目标:

  • 刷课至2.9

学习内容:

2.7 模型的本地空间

  • Houdini
  • 观察空间:
    • 中心点在屏幕中心
    • 右手坐标系,右正左负
  • 应用程序阶段数据
  • 几何阶段
    • 顶点着色
      • 模型变换
      • 视图变换
      • 顶点着色
    • 几何曲面细分着色
    • 裁剪
      • 投影变换
      • 裁剪
    • 屏幕映射
  • 光栅化阶段
    • 三角形设置
    • 三角形遍历
    • 片断着色
    • 混合
      • Alpha测试
      • 模板测试
      • 深度测试
      • 混合
  • 帧缓存

2.8 CGInclude

  • HLSLSupport.cginc:编译CGPROGRAM时自动包含此文件,其中声明了很多预处理器宏帮助多平台

  • UnityShaderVariables.cginc:编译CGPROGRAM时自动包含此文件,其中声明了很多各种内置的全局变量

  • UnityCG.cginc:需手动添加,其中声明了很多内置的帮助函数与结构

  • 获取途径

    • 从安装目录中获取: Data/CGIncludes/xxx.cginc
    • 从官网下载
  • 如何使用

CGPROGRAM
//...
#include"xxx.cginc"
//...
ENDCG

2.9 空间变换

  • 本地空间 -> 模型变换 -> 世界空间 -> 视图变换 -> 相机空间 -> 投影变换 -> 裁剪空间
  • 矩阵变换运算符
mul(M,V);

 M=矩阵
 V=向量 
Shader "taecg/FrameWork"
{
     SubShader
     {
          pass
          {
               CGPROGRAM
                    #pragma vertex vert
                    #pragma fragment frag
                    #include"UnityCG.cginc" //内置的帮助函数与结构

                    //定义了一个组,名字叫做appdate
                    struct appdate
                    {
                         //输入
                         float4 pos : POSITION;
                         float4 color:COLOR;
                    };

                    struct v2f 
                    {
                          float4 pos : SV_POSITION;
                          
                    };
            
                    //顶点着色器
                    v2f vert(appdate v)
                    {
                            v2f 0 = (v2f)0;
                            0.pos = UnityObjeceToClipPos(v.vertex); // 矩阵变换 官网可查
                            return 0;
                    }
                    
                    //片断着色器
                    float4 frag(v2f i) : SV_TARGET
                    {
                    
                    }
                    EndCG
          }
     }
}
  • 模型空间 -> 投影空间:UNITY_MATRIX_MVP

  • 模型空间 -> 观察空间:UNITY_MATRIX_MV

  • 视图空间:UNITY_MATRIX_V

  • 投影空间:UNITY_MATRIX_P

  • 视图空间 -> 投影空间:UNITY_MATRIX_VP

  • 本地空间 -> 世界空间:unity_ObjectYoWorld

  • 世界空间 -> 本地空间:unity_WorldToObject

  • 模型空间到齐次裁剪空间

UnityObjeceToClipPos(v.vertex)

学习产出:

  • 2.7
  • 2.8
  • 2.9

标签:MATRIX,变换,生零,转行,UNITY,cginc,v2f,空间,TA
From: https://blog.csdn.net/qq_41922007/article/details/136645881

相关文章

  • EF Core – Table / Entity Splitting
    参考Docs– Advancedtablemapping TableSplittingTableSplitting指的是把多个Entity映射到同一个Table。Whentouseit?假设我们有一个OrderEntity,Order有很多信息:CustomerInfo,ShippingInfo,PaymentInfo,TotalAmount等等等。如果把所有信息都写进Orde......
  • 基于http方式的portal 认证
    之前portal认证都是使用的portal协议。目前需要支持所有厂商http协议华为:URL:https://support.huawei.com/enterprise/zh/doc/EDOC1100127139/609549d8#ZH-CN_CONCEPT_0176368423 华三:URL:https://www.h3c.com/cn/d_201908/1222239_30005_0.htm 思科:URL:https://github......
  • Pytorch - Dataloader
    BasicallytheDataLoaderworkswiththeDatasetobject.SotousetheDataLoaderyouneedtogetyourdataintothisDatasetwrapper.Todothisyouonlyneedtoimplementtwomagicmethods:__getitem__and__len__.The__getitem__takesanindexandretu......
  • NewStarCTF-firstweek
    一、Crypto-brainfuck1.附件内容如下。++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>+++++......
  • A Person Who Is Important to Me
    ......
  • 前端自动部署报错“http://registry.npm.taobao.org/****/download/array-tree-filter
    自动部署时报错我试过更改淘宝镜像为https://registry.npmmirror.com但都不生效报错如下图:代码中的配置文件如下如上配置在其他测试环境均正常,只在生产环境报错求大佬帮忙看看是什么原因呀......
  • Someone important to me
    ......
  • linux中防火墙设置(iptables & firewalld & ufw )
       iptables、firewalld和ufw都是Linux系统中常用的防火墙软件,它们之间的区别如下:   iptables:iptables是Linux系统中最原始、最基础、最底层的防火墙软件,它可以直接配置Linux内核中的网络规则,控制网络数据包的流动。由于iptables配置比较复杂,需要对网络协议和规则有......
  • 大屏可视化项目示例--基于Vue3+vite2+echart+mock+axios+dataV
    图例: 项目环境:Vite、Echarts、Npm、Node、axios、mock、vue3、dataV。项目地址:IofTV-Screen-Vue3:......
  • Vue tableList:<any>[]介绍
    letdata=reactive({tableList:<any>[]});在这段代码中,tableList:[]表示tableList是一个数组,数组中的元素类型可以是任意类型(即TypeScript中的any类型)。[]中的尖括号<>是TypeScript中的类型断言语法,用于指定数组的元素类型。表示任意类型,即可以是任何......