Shader 学习笔记 20151031

Segment 1 阅读

阅读了Unity Shaders and Effects Cookboot的 Custom light model一节。(page 17)

阅读了Unity online manual关于 Custom light model两段文章
http://docs.unity3d.com/Manual/SL-SurfaceShaderLighting.html
http://docs.unity3d.com/Manual/SL-SurfaceShaderLightingExamples.html

阅读了博文 【Unity Shaders】初探Surface Shader背后的机制
http://blog.csdn.net/candycat1992/article/details/39994049

阅读了博文【Shader拓展】Illustrative Rendering in Team Fortress 2
http://blog.csdn.net/candycat1992/article/details/37696187


前两天阅读完了《GPU 编程与CG 语言之阳春白雪下里巴人.pdf》,写的很好,通俗易懂。

前两天阅读了《理解矩阵(孟岩)(全)》,这本简直神了,告诉了我们什么是数学的直觉意识,其中针对矩阵代表运动(变换),矩阵本身就是坐标系,为何空间点的坐标系变换需要齐次坐标(只需要一次矩阵乘法),空间的本质是容纳运动(变换)等等,这些论述极为精彩。
http://www.docin.com/p-201848123.html

Segment 2 理解

  • 理解了Unity的渲染流程。特别是Unity里面的几个关键处理同顶点着色器片段着色器的关系。这一段写法暗含深意 #pragma surface surfaceFunction lightModel [optionalparams],#pragma surface surf BasicDiffuse vertex:vert finalcolor:final noforwardadd,其意思就是,如果你不玩一些特别的花样,其实就是在片段着色器里面先渲染surfaceFunction然后再搞lighting model.
    NA

  • 理解了Unity Shader的运行机制

    1,正常程序运行总是需要一个流程,对常见的C来说,就是顺序的,见到什么Call什么。但是对于Unity Shader来说,他的运行顺序是默认的(见上图),所以如果不清楚默认的程序流程,读code就很头疼。

    2,正常程序在传递数据的时候,要么把值直接塞进去(通过定义一个临时变量的方式),要么传递指针进去,但是Unity Shader不,它不太允许/建议你建立自己定义的临时变量,你能用的就是规定死的一些类型。譬如:SurfaceOutput,或者类似下面这样一个自定义的struct,所谓自定义也是和顶点着色器/片段着色器息息相关的。
    这个例子里面定义的就是Texture的UV坐标以及顶点颜色这两个。

    <textarea readonly="readonly" name="code" class="c++">
        struct Input  
                    {  
                        float2 uv_RampTex;  
                        float4 vertColor;   
                    };
    </textarea>

    为啥会是这样?规定的这么死?原因就是GPU都是通过寄存器直接传递的,并且都是硬连的,不是那种在内存里面想咋传就咋传的方式。


  • 通过对Teamfortress博文的拜读,了解到了一个shader eng是如何同artist一起工作的,以及shader eng主要做什么/artist主要做什么。

    但很初步,以后还需要更细致的摸索、体会。


  • 初步识别一些简单的光照识别算法。譬如halfLambert的算法。
    其核心算法是让暗的地方不要那么暗,以便增强一个物体的非光照面的细节,但是效果上减弱了明暗对比。
    可能HDR会更好?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值