Shader编程教程【会员免费】

默认教学计划
3148人加入学习
(133人评价)
价格 ¥ 199.00
教学计划
会员免费学 购买课程
SubShader
	{
		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag

			void Func(out float4 c);

			float Func2(float arr[2])
			{
				float sum = 0;
				for (int i = 0; i < arr.Length; i++)
				{
					sum += arr[i];
				}
				return sum;
			}

			void vert(in float2 objPos:POSITION, out float4 pos : POSITION, out float4 col : COLOR)
			{
				pos = float4(objPos,0,1);
				col = pos;
			}

			void frag(inout float4 col:COLOR)
			{
				Func(col);
				float arr[] = { 0.5,0.5 };
				col.x = Func2(arr);
			}

			void Func(out float4 c)
			{
				c = float4(0,1,0,1);
			}

			ENDCG
		}
	}

 

[展开全文]

编写color变量时使用fixed数据类型已经足够保证精度

[展开全文]

void  vert(in float2 objPos:POSITION, out  float  pos:POSITION)

in 表示引擎为程序的输入

:表示语义  

语义后面跟的 数据的意义 决定系统传过来的类型

out 表示

 

frag作为片段程序最终的意义就是计算颜色 

inout :既是从顶点输入的 也是从片元输出的

[展开全文]

Surface shander

Surfaceoutput

 

Input

 

Lignt

 

Shadow

[展开全文]

HLSL  基于OpenGL

优点 :与硬件无关的软件接口 

           良好的移植性

缺点 :语法体系自成一件

GLSL   基于DirectX (微软公司的产品)

优点 :不依赖于硬件

缺点 :移植性比较差   

            微软平台上一家独大 限制了发展

CG 

优点 :保留了C语言的大部分语义

          可以被OpenGL与DX 都支持  

          代码的易重用性,可读性得到提高,编译              器代码优化

          

 

 

             

[展开全文]

定点着色器完成的工作:

1,空间变换

2,纹理坐标的生成

3,光照

 

深度测试:

剔除不卡见的顶点

 

光栅化处理阶段:

从纹理当中找到

 

Alpha测试:

去绘制透明的物体

 

混合阶段:

绘制最终的图像

[展开全文]