没有合适的资源?快使用搜索试试~ 我知道了~
对一个简单的shader程序的介绍,介绍了shader编程里的一些基本概念,shader的编写流程
资源推荐
资源详情
资源评论
// Pseudo Reflection
//
// Pseudo reflection using a 2d reflection map with
precomputed Fresnel factor.
// A Fresnel diffuse map (greyscale) can also be used to
modulate diffuse (falloff)
// (c)2003-2005 Virtools
//--- Standard Automatic Parameters
float4x4 wvp : WORLDVIEWPROJECTION;
float3x3 itworld : ITWORLD;
float4x4 view : VIEW;
float4 dif : DIFFUSE;
float alpha
<
string UIWidget = "spinner";
float UIMin = 0;
float UIMax = 1;
float UIStep = 0.01;
string UIName = "ALPHA VALUE";
> = 0.93;
float tile
<
string UIWidget = "spinner";
float UIMin = 0.1;
float UIMax = 10;
string UIName = "TEXTURE TILE";
> = 1;
Texture tex : TEXTURE;
float texTexSize : TEXELSIZE;
//--- Manual Parameters
Texture envMap;
Texture diffuseFresnel;
float diffuseFresnelTexSize : TEXELSIZE;
#define MINTEXSIZE 0.000001
bool UseVertexAmbientOcclusion = true; //--- Mesh has
Precomputed Ambient Occlusion Color on vertices
float EnvMapScaleFactor <float UIMin=0.2; float UIMax=0.5;>
= 0.438;
float VertexPositionInfluence <float UIMin=0; float
UIMax=3;> = 1.5;
float ReflectionFactor <float UIMin=0; float UIMax=1.0;> =
1.0;
float4 emiColor : Emissive;
sampler texSampler = sampler_state {
texture = <tex>;
MipFilter = LINEAR;
Minfilter = LINEAR;
Magfilter = LINEAR;
AddressU = WRAP;
AddressV = WRAP;
};
sampler diffuseFresnelSampler = sampler_state {
texture = <diffuseFresnel>;
MipFilter = LINEAR;
Minfilter = LINEAR;
Magfilter = LINEAR;
AddressU = CLAMP;
AddressV = CLAMP;
};
//--- Static Variables
static float2 offset = -0.5;
static float2 scaleFactor = float2( EnvMapScaleFactor, -
EnvMapScaleFactor );
注释部分说明了此材质为假反射,除了自身的纹理贴图,该
shader应用了额外两张贴图,假反射应用一张带有预先计
算好的菲涅尔参数的2d反射贴图;另一张菲涅尔漫反射贴图
(一张灰度的梯度明暗衰减贴图)用来调节漫反射的衰减;
标准自动更新参数:对应至标准的3D绘图引擎变量
Float4x4:浮点类型的4X4矩阵
“:”后面的是语义,来指明这个变量的特殊用途
定义了一个调整参数的滑动变量,参数类型为浮点型,尖括
号里面是对这个滑动变量的参数的声明包括最小值、最大值、
步数以及变量名称等,后面的等号是该变量的初始值,这里
定义的是一个透明度的调整,运行后在shader params里
的效果如下图
整图见附录
同上,这里定义了调节纹理平铺方式的滑动变量
定义贴图及贴图的大小(模型表面的纹理贴图)
用户更新参数:对应至外部可供用户存取、或是可通过
shader相关的BB、材质设定修改的变量//这里定义的是环
境贴图和菲涅尔漫反射贴图,具体图见附录
标准自动更新参数:菲涅尔反射贴图的大小
顶点颜色是否受环境光影响
环境贴图缩放因数
顶点位置影响
反射因数
自发光颜色
纹理采样器:在Shader中要完成一次纹理映射操作,首先
需要定义一个纹理采样器,这个纹理采样器包含了采样状态,
采样状态指定了纹理将如何被采样,并控制采样过程中的纹理
过滤方式。
这个是表面贴图的纹理采样
这是菲涅尔反射贴图的纹理采样,纹理采样器的语法格式如
下
纹理采样器进行采样的纹理对象
纹理在被缩小时进行线性过滤
纹理在被放大时进行线性过滤
U方向的纹理寻址模式采用夹取映射寻址模式
V方向的纹理寻址模式采用夹取映射寻址模式
静态变量:只能被Shader程序所存取
资源评论
- zleisure2013-01-06楼主说的对一个简单的shader介绍,可基本没啥用
lucharming
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功