Unity Shader 中实现凹凸映射

使用切线空间

每一个顶点都有自己的切线空间。在该空间中,z轴是顶点的法线方向,x轴是顶点的切点方向,而y方向则是两者叉积的方向。
我们需要在顶点着色器中把视角方向和光照方向从模型空间变换到切线空间中,即我们需要从模型空间到切线空间的变换矩阵。而很好求的是,这个变换矩阵的逆矩阵正是在顶点着色器中切线(x轴),副切线(y轴),法线(z轴)的顺序!!按列!!排列即可得到。
并且,如果变换中仅存在平移和旋转变换,则变换矩阵的逆矩阵就是它的转置。所以变换矩阵即是按行排列xyz轴之后的结果。

Shader中的实现

使用切线空间来实现的方式

Shader "Unity Shaders Learn/Chapter 7/Normal Map In Tangent Space" {
    Properties {
        _Color ("Color Tint", Color) = (1,1,1,1)
        _MainTex ("Main Tex", 2D) = "white" {}
        _BumpMap("Normal Map", 2D) = "bump"{}
        _BumpScale("Bumo Scale",Float) = 1.0
        _Gloss("Gloss", Range(8.0,256)) = 20
        _Specular("Specular", Color) = (1,1,1,1)
    }
    SubShader{
            Pass{
        Tags { "LightMode"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值