【新人学习渣作】渲染:从物体坐标系到世界坐标系

Unity Shader学习:从物体坐标到世界坐标转换
本文介绍了如何在Unity中将物体坐标系的法线转换为世界坐标系,通过理解矩阵变换和逆矩阵的应用,解决物体旋转和缩放时颜色变化的问题。通过UnityShaderVariables的Unity_ObjectToWorld和Unity_WorldToObject矩阵,以及矩阵转置,实现了法线的正确变换,从而在物体旋转时得到预期的渲染效果。

渲染:从物体坐标系到世界坐标系


在unity中
实现一个对网格取法线的简单着色器并把法线向量设置为颜色向量以在屏幕上显示

Shader"Custom/MyShader"{
        SubShader{
                  Pass{
                          #pragma vertex MyVertex
                          #pragma fragment MyFragment
                          #include "UnityCG.cginc"
                          struct VertexData
                          {
                                    float4 position:POSITION;
                                    float3 normal:NORMAL;
                              }
                              struct Interpolator{
                                     float4 position:SV_POSITION;
                                      float3 normal:TEXCOORD0;
                              }
                              Interpolator MyVertex(VertexData Data)
                              {
                                     Interpolator OutPut;
                                     OutPut.position = mul(UNITY_MATRIX_MVP,Data.position);//投影到屏幕上
                                     OutPut.normal =  Data.normal;
                                     return Output;
                              }
                              float4 MyFragment(Interpolator input):SV_TARGET
                              {
                                      return float4(input.normal*0.5 + 0.5,0);
                              }
                  }
        }//屎一样的缩进格式

现在来测试一下着色器
完成后创建Material

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值