Normal:  法线

Normao mapping: 法线贴图

Lighting mapping: 光照贴图

Bump mapping:     凹凸贴图;模拟粗糙外表面的技术。 FX-Water simple.shader中即用到了。模拟波浪效果。

Rim lighting: 边缘光照; 在对象的边缘部分增加亮度。

Base Texture, 基础纹理。

Detail Texture,细节纹理。与base texture使用相同的uv,但是在material中的Tiling值不同。

Cubemap:立方图

Cubemap reflection,立方图反射。

Lambert: 漫反射的lightmodel

cg函数:数学、几何、纹理映射、偏导、调试几大类。

from   wenku.baidu.com/link?url=5lj1AuzFz6YEZDt72eHEIooI42GhwA_hL0_YO6N827tmzqYV85kNqL7WXmvZZ5JJv7GZiYXaIZKAKSY2Rnaf8IdpL2HiwzsiCydgdOcUfWu

tex2D:  Tex2D(sampler2D tex, float2 s),二维纹理查询。 返回四元向量值。  纹理映射函数都返回四元向量值。

mul: 矩阵乘法

UnpackNormal: U3D的标准法线解压函数; 在UnityCG.cginc中。

 unity3d 定制的表面着色器(Surface Shader)的标准输出结构是这样的:struct SurfaceOutput { half3 Albedo; //反射率 half3 Normal; //法线 half3 Emission; //自发光,用于增强物体自身的亮度,使之看起来好像可以自己发光 half Specular; //镜面 half Gloss; //光泽 half Alpha; //透明 };

#pragma surfacesurfaceFunction lightModel [optionalparams]

surfaceFunction -表示Cg函数中有表面着色器(surface shader)代码。这个函数的格式应该是这样:void surf (InputIN,inout SurfaceOutput o),Input是你自己定义的结构。Input结构中应该包含所有纹理坐标(texturecoordinates)和和表面函数(surfaceFunction)所需要的额外的必需变量。

lightModel-在光照模式中使用。内置的是Lambert (diffuse)和 BlinnPhong(specular)。

//vertex shader的输入

struct appdata_base { float4 vertex : POSITION; //顶点位置 float3 normal : NORMAL; //法线方向 float4 texcoord : TEXCOORD0;//纹理坐标。。?};

// scroll bump wavesfloat4 temp;//四元向量xyzwv.vertex.xzxz表示去除vertex的x z x z四个分量组成一个新的向量; 计算后给temp赋值。temp.xyzw = v.vertex.xzxz * _WaveScale / unity_Scale.w + _WaveOffset;o.bumpuv[0] = temp.xy * float2(.4, .45);o.bumpuv[1] = temp.wz;

from

http://hi.baidu.com/stupidboys1027/item/e6ac3cbb4faccbd684dd799a

语意输入,语意输出, uniform

根据语意将参数与顶点的信息绑定。

很明显地看到,入口变量中有三种不同类型的参数:语义型输入参数,语义型输出参数,uniform输入参数。首先我们来理解“语义”,这个词的真正含义,其实,更准确地说我们应该把它叫“绑定语义”(Binding Semantics),从Binding这个词我们就能想像得到,POSITION这个语义,它就是用来把pInitial 这个参数与外部环境(OpenGL)中的顶点位置向量绑在一起。输出语义也是这样的原理。让我们来回答开始时提出的问题:从哪里来,到哪里处。1、从哪里来。
现在让我们假设,OpenGL在对顶点进行渲染之前,在程序中都自动生成了这样一个数据结构struct vertex; 这个数据结构包含了vertex.position, vertex.normal, vertex.color, vertex.texcoord.等等所有与顶点相关的状态信息。而这些信息都是公开的,能够被外部函数所引用。所以,CG中的语义型输入参数的值就是从这些信息中自动获取。如例子中的“float4 pInitial : POSITION”,通过POSITION这个绑定语义,把pInitial这个变量与vertex.position这个信息绑定在一起,于是pInitial就被赋值了。这是不是和C++中的引用一样的原理呢?
注意:输入参数是只读的。
2、到哪里去?
如果知道了从哪里来,那么到哪里去也很好理解,(out float3 color : COLOR),有个OUT在前面作修饰的参数就是语义型输出参数。这里通过COLOR这个绑定语义,把color向量与vertex.color这个值绑定在一起。在CG的代码中,经过一系列的运算和处理之后,最终得到顶点的新的颜色,把这个颜色值重新返回给OpenGL的顶点属性中,OpenGL再通过读取该属性对顶点进行渲染。总的来说,语义型参数的输入与输出都是由CG自动完成,程序要做的只是把它与对应的语义绑定。说了那么多,还有一个uniform输入参数,我们还没有说。如果说语义型参数是CG自动处理的,那么uniform型参数就是要程序员在程序中为它赋值的。

http://blog.sina.com.cn/s/blog_63507a56010115gr.html

from cg users manual

float2 * float2; 对应分量相乘后得到的向量。 不是叉乘。

dot, 点乘, 得到的是标量。 对应分量相乘后的和值。

标量与向量相乘, 是将向量的每个分量乘以标量后得到的新向量。 (向量放缩了。)

mul, 矩阵乘法; 矩阵乘以向量、 或者矩阵相乘。

Swizzle operator:

-------float3(a,b,c).zyx yields float3(c, b, a)

-------float4(a,bc,d).xxyy yields float4(a,a,b,b)

Texture Lookups 需要两个参数: Texture sampler, texture coordinate

--------texture sampler:   sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampleRECT.

--------tex2D/RECT/CUBE, nonprojective

--------text2D/RECT/CUBEproj, projective texture lookup

float, 32bit浮点数, s23e8 + 1bit

halft, 16bit,                s10e5

int, 32 bit integer

fixed, 12bit

bool,

sampler*, texture object的HANDLE。

string

向量、矩阵。

mul(MVP, pos)---->将vertex的postion转化为屏幕上的坐标

tex2D(texture, texcoordinate)--------->Output the color taken from our texture

vertex的输出 是 fragment的输入

屏幕绘制过程:
1) 屏幕绘制到temporary texture中; 而不是通常的screen buffer
2) temporary texture 会经过filter的处理。
3) 处理结果放到screen buffer中准备绘制到屏幕上显示给用户

shader 4 杂 一些和函数名词、数据结构相关推荐

  1. Java语法理论和面经杂疑篇《七. 数据结构与集合源码》

    目录 1. 数据结构剖析 1.1 研究对象一:数据间逻辑关系 1.2 研究对象二:数据的存储结构(或物理结构) 1.3 研究对象三:运算结构 1.4 小结 2. 一维数组 2.1 数组的特点 2.2 ...

  2. 数据结构c语言函数大全,数据结构习题库(c语言版).doc

    数据结构习题库(c语言版) 第一章 绪 论 一.基本内容 数据.数据元素.数据对象.数据结构.存储结构和数据类型等概念术语的确定含义.抽象数据类型的定义.表示和实现方法.描述算法的类C语言.算法设计的 ...

  3. c语言中主函数创建链表,主函数怎么调用函数(数据结构,创建链表)

    主函数怎么调用函数(数据结构,创建链表)0 rnxm44602018.09.29浏览179次分享举报 #include#include"stdlib.h"typedefintEle ...

  4. python编程-迭代器(类,方法,继承),函数,数据结构,

    a, b = 0, 1 while b < 10:print(b) #print(b,end=',')a, b = b, a+b相当于 n=b m=a+b a=n b=m输出: 1 1 2 3 ...

  5. 2.2基本算法之递归和自调用函数_数据结构与算法之5——队列和栈

    栈和队列比较简单,而且实用性非常广泛,这里主要介绍一下他们的概念和实现,在很多算法中,栈和队列的运用很重要,因此,虽然简单确是最重要的数据结构之一,必须重视. 栈是保证元素后进先出(后存入者先使用,L ...

  6. 零基础入门Python:基本命令、函数、数据结构

    导读:本文对Python的基本使用做一个简单的介绍.限于篇幅,本文不可能详细讲解Python的使用,只是针对本书涉及的数据挖掘案例所用到的代码进行基本讲解.如果读者是初步接触Python,并且使用Py ...

  7. WinPcap编程常用函数和数据结构

    WinPcap编程实质上就是对各种函数的熟悉和调用,因此本节对前面稍微做一下小结,对所用到的函数及数据类型进行归纳和总结,一是为了回顾所掌握的知识,二是加深印象,便于后面更好地学习. 常用函数和结构体 ...

  8. Unity Shader屏幕特效基础OnRenderImage()函数

    前言:  unity shader中的pass是会顺序执行的,但是由于在图像处理中我们常常需要使用一个pass的处理结果作为另一个pass的输入,这个时候就需要用到OnRenderImage()函数了 ...

  9. 如何利用计算机求函数解析式,数据结构表达式求值(计算器)实验报告(共10篇).doc...

    数据结构表达式求值(计算器)实验报告(共10篇) 数据结构表达式求值(计算器)实验报告(共10篇) 数据结构课程设计_实验报告(一)表达式求值(计算器) 数据结构课程设计 实验报告 起止时间:2015 ...

最新文章

  1. WinForm绘制带有升序、降序的柱形图
  2. Java学习笔记29
  3. 实验一:使用ADO.NET方式读数据
  4. Spring Boot使用mongo的GridFS模块
  5. 【鸿蒙 HarmonyOS】UI 布局 ( 相对布局 DependentLayout )
  6. C语言之计算大数阶乘,如计算100!和1000!等~~~
  7. Android自动化测试Uiautomator--UiSelector接口简介
  8. Kettle连接Mysql数据库异常
  9. Python学习笔记之类(二)
  10. ZetCode Servlet 教程
  11. Epic Games表示不服苹果垄断案裁决 继续提出上诉
  12. 4个技巧,教你如何用excel绘制出高大上的图表
  13. python写出租车计费系统_关于使用Python——写出租车计费系统
  14. Win11动态磁贴没了?Win11中恢复动态磁贴的方法
  15. Win 7 Office 2007,打开word出错
  16. 浙江工业大学计算机技术专业考研经验分享帖
  17. MSRA提出通用文档预训练模型LayoutLM,通往文档智能之路!
  18. 31 个Python代码实现的常用功能(附案例源码)
  19. 基于Java+SpringBoot+Thymeleaf+Mysql在线教育视频点播学习系统设计与实现
  20. oracle数据库恢复aul_Oracle数据库恢复dmp

热门文章

  1. 走近Java模块化系统OSGi
  2. (五)Java工具类ArrayUtils详解
  3. 小瓜牛漫谈 — String、StringBuffer、StringBuilder
  4. 成为一名更好的程序员:如何阅读源代码
  5. Java书籍Top 10
  6. matlab小数取整函数
  7. c++编程 文件系统
  8. opencv 中 快速傅里叶变换 FFT
  9. [译]Web 性能优化: 图片优化让网站大小减少 62%
  10. 人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练