13.Shader
来源:互联网 发布:多空资金指标公式源码 编辑:程序博客网 时间:2024/05/01 22:58
终于到了Shader部分,不过书中只有vertex shader和pixel shader,呃。而且书中是以CG为例子的,不过都差不多。
写Shader需要在.material中先定义shader。
fragment_program MyFragmentShader1 cg{source Ogre3DBeginnersGuideShaders.cgentry_point MyFragmentShader1profiles ps_1_1 arbfp1}vertex_program MyVertexShader1 cg{source Ogre3DBeginnersGuideShaders.cgentry_point MyVertexShader1profiles vs_1_1 arbvp1default_params{param_named_auto worldViewMatrix worldviewproj_matrix}}material MyMaterial13{technique{pass{vertex_program_ref MyVertexShader1{}fragment_program_ref MyFragmentShader1{}}}}然后要再创建一个.cg文件,写入shader函数。
void MyVertexShader1(float4 position : POSITION,out float4 oPosition : POSITION,uniform float4x4 worldViewMatrix){oPosition = mul(worldViewMatrix, position);}void MyFragmentShader1(out float4 color : COLOR){color = float4(1, 0, 1, 0);}大概的格式与步骤就是这样了,要是用就直接使用这个材质。
下面再贴一个复杂一点的,使用了纹理,并且实时改变了顶点位置。
fragment_program MyFragmentShader2 cg{source Ogre3DBeginnersGuideShaders.cgentry_point MyFragmentShader2profiles ps_1_1 arbfp1}vertex_program MyVertexShader5 cg{source Ogre3DBeginnersGuideShaders.cgentry_point MyVertexShader5profiles vs_1_1 arbvp1default_params{param_named_auto worldViewMatrix worldviewproj_matrixparam_named_auto pulseTime time}}material MyMaterial17{technique{pass{vertex_program_ref MyVertexShader5{}fragment_program_ref MyFragmentShader2{}texture_unit{texture terr_rock6.jpg}}}}
对应的CG文件
void MyFragmentShader2(float2 uv : TEXCOORD0,out float4 color : COLOR,uniform sampler2D texture){color = tex2D(texture, uv);}void MyVertexShader5(uniform float pulseTime,float4 position : POSITION,out float4 oPosition : POSITION,float2 uv : TEXCOORD0,out float2 oUv : TEXCOORD0,uniform float4x4 worldViewMatrix){oPosition = mul(worldViewMatrix, position);oPosition.x *= (2 + sin(pulseTime));oUv = uv;}
- 13.Shader
- shader
- shader
- shader
- Shader
- Shader
- shader
- shader
- shader
- Shader
- shader
- Shader
- shader
- Shader
- shader
- Shader
- Shader
- Shader
- 定义Window进入和退出效果(及Window,Activity,View的理解)
- Galaxy S II/ i9100 Root图文教程
- [转]使用 Apache MINA2 实现 Web 系统的消息中间件
- 如何把上传文件的浏览按钮换成其他样式 或者图片
- B2C网上商店平台设计的一个细则:处理页面链接转移权重的重要性
- 13.Shader
- ORACLE LOCK
- HTTP header中的 Cache-control
- oracle中left join和right join的区别
- oracle 上解锁用户加密码
- Linux下.ko, .o, .so, .a, .la文件
- ubuntu下eclipse打开项目文件夹
- ubuntu配置
- 代码生成器