ogre中的材质脚本 (一)

OGRE中材质脚本属性 详细介绍了OGRE中各材质脚本的属性,并给出了几个示例,可以方便查找,节省开发速度。 立即下载
ogre中的材质脚本 (一)

资源组管理器初始化完毕时,装载材质脚本,OGRE会自动的在组相关的资源位置查找".materal”扩展名的文件,并对这些脚本进行语法解 析。手动解析可以通过MaterialSerializer::parseScript()。但是注意的是:解析脚本时并没有对脚本中定义的全部纹理等资 源进行加载,所以,在我们访问一个材质的时候,一定要确保它已经装载,或者,我们手动将此材质Load()一次再进行访问。另外,材质名必须唯一,且不可 有”:”号。
格式:以{},空格,//,作为标识符。
// 后跟注释,不支持多行注释。
{} 之间代表为一个解析单元。
    每一个material XXX 代表是一个材质单元。其中,每一个technique代表一个材质渲染手法,pass是每个渲染通路模式,  texture_unit则是一个纹理单元。
一个材质脚本允许有多个渲染手法技术,一个渲染手法技术中允许有多个渲染通路模式,一个渲染通道允许有多个纹理单元。
 
渲染技术Techinique:
一个“渲染技术”就是一个单独的渲染物体的方法。多个技术的存在原因是为适用不同的显卡以及根据远近关系对一个物体进行不同的渲染。
技术的排列需要一定顺序,一般来说,最常用最的技术放在脚本最前面,
格式为:  Techinique 技术名
不命名的技术默认会以其序列号进行命名,注意,技术名不可重复。
 
方案技术scheme:
因为我们对不同的显卡标准或根据某中不同的需求,设计出不同的技术,每种技术所适用的环境方案需要我们指出。
格式为:  scheme 方案名
默认的方案是default,若我们某一个技术适用于开启hdr,Shader3.0的方案,我们只需对该技术设置方案为 scheme hdr_open_shader_3_0 即可。
 
细节层次索引 lod_index:
每一个技术都必须对应一个细节层次索引。一般来说,默认的都是0,即最近最优秀的渲染技术,当我们需要对远处细节进行渲染时,则设置这个值吧。
格式为:  lod_index 数值层级
虽说lod的数值层级是从0-65535,一般设置2-4层就差不多了吧。因为技术有一定的排列顺序,所以,我们一般是将index大的技术放在后面。
 
细节层次距离 lod_distances:
这里指定使用不同的细节层次的距离值,注意该属性必须在所有的技术块外面进行声明指定。
如例子中所标识:lod_distance 200 就代表,在0-200这个距离内,我们使用细节层次为0的技术,在200以上的则使用细节层次为1的技术
Lod_distance 200 700.5 则表示在0-200时我们使用细节0,200-700.5这段距离使用细节1的材质技术,700.5以上使用细节2的材质技术。200和700.5间使用空格间隔。
 
所以技术的排列顺序通常为这样
Material MyTestMaterial
{
lod_distances 200
       Technique Lod_0_Hdr_Open_Shader_3_0
       {
Lod_index 0
              Pass 0
{
       Texture_unit
       {
              //…..
}
       Texture_unit
       {
              //…..
}
              }
Pass 1
{
       Texture unit
{
       // ….
}
}
}
       Technique Lod_0_Hdr_Close_Shader_1_0
       {
Lod_index 0
              Pass
{
       Texture_unit
       {
              //…..
}
       Texture_unit
       {
              //…..
}
              }
}
       Technique Lod_1_Hdr_Open_Shader_3_0
       {
Lod_index 1
              Pass
{
       Texture_unit
       {
              //…..
}
       Texture_unit
       {
              //…..
}
              }
}
       Technique Lod_1_Hdr_Close_Shader_1_0
       {
Lod_index 1
              Pass
{
       Texture_unit
       {
              //…..
}
       Texture_unit
       {
              //…..
}
              }
}
}
 
Pass渲染通路:
再次强调一个概念:一个材质脚本,为了适应不同的显卡和LOD细节层次技术,我们允许有多个技术,为了加速充分的使用GPU,每个技术中同时又支持多通道的渲染,每个渲染通道内,同时又允许有多个纹理单元。首先这个改变必须明确理解才能顺利的进行材质脚本的设计。
我们在“渲染通路”这层可以设置以下属性:
ambient       材质的环境光反射系数
格式是 ambient red green blue alpha
    每个值要求为0.0-1.0之间,例如ambient 0.2 0.2 1.0 1.0代表每个顶点对环境光的反射系数。注意:若关闭了动态光照和纹理层的光照色彩混合的话,该项就不起作用了,此时完全是纹理颜色。默认值为全白。
  diffuse       材质的漫反射系数
格式是 diffuse red green blue alpha 其他同上。
  specular      材质的镜面反射系数
格式是 specular red green blue alpha Shininess ,最后多了一个参数,是闪耀值(高光系数),该值处于1-128之间。注意:若该值较大则会令人感到耀眼的反射。
 emissive      材质自发光系数
格式是 emissive red green blue alpha
 
   scene_blend
设置渲染通道和现有的渲染层内容混合方式,有预设的四种方式:
格式为scene_blend add或scene_blend modulate/alpha_blend/colour_blend
 
Add 是将渲染出的颜色和亮度一起叠加到渲染场景中,相当于“scene_blend one one”
Modulate 是将渲染输出的颜色叠加到渲染场景中,相当于”scene_blend dest_colour zero”
alpha_blend 是将渲染输出的亮度叠加到渲染场景中,相当于”scene_blend src_colour one_minus_src_colour”
colour_blend 是将渲染输出的alpha值进行遮罩缓和。相当于”scene_blend src_alpha one_minus_src_alpha”
当然,我们也可以不使用预设的方式,进行自定义源和目标的混合因数
格式为 scene_blend src_factor dest_factor
 
     这样最终渲染出的颜色就是 (渲染通道的结果 * src_factor) + (渲染场景的颜色 * dest_factor),其中src_factor dest_factor两个参数可选以下值:
 
one
常数值1.0
zero
常数值0.0
dest_colour
已存在的像素颜色
src_colour
纹理像素颜色
one_minus_dest_colour
1 -(dest_colour)
one_minus_src_colour
1 -(src_colour)
dest_alpha
已存在的像素alpha值
src_alpha
纹理像素alpha值
one_minus_dest_alpha
1 -(dest_alpha)
one_minus_src_alpha
1 -(src_alpha)
 
例如:scene_blend one zero (代表渲染出的纹理完全覆盖其后的渲染场景,即渲染管道出来的纹理是完全不透明的) ß默认的混合模式也正是这种。
 
 depth_check
是否开启深度缓冲检测 格式为 depth_check on 或 depth_check off
 
   depth_write
是否打开深度缓冲写入。 格式为 depth_write on 或 depth_write off
默认的时候深度缓冲是打开的,个别时候我们需要渲染一系列透明物体的关系时候,则将其关闭。
 
   depth_func
写入象素前的深度比较函数。 格式为 depth_func compareFun
其中compareFun可以取下面值之一。
always_fail
永远不向渲染目标写入像素
always_pass
总是将像素写入渲染目标
less
如果将要写入的像素的深度小于现在缓冲区内容的深度,则写入
less_equal
如果将要写入的像素的深度小于等于现在缓冲区内容的深度,则写入
equal
如果将要写入的像素的深度等于现在缓冲区内容的深度,则写入
not_equal
如果将要写入的像素的深度不等于现在缓冲区内容的深度,则写入
greater_equal
如果将要写入的像素的深度大于等于现在缓冲区内容的深度,则写入
greater
如果将要写入的像素的深度大于现在缓冲区内容的深度,则写入
 
默认值是 depth_func less_equal ,注意:当我们关闭深入缓冲检测的话,该函数无效。
 
   depth_bias
设置此渲染通路的深度值的偏向。可用于使共面的多边形中的一个位于其它之上,例如印制花纹图案。
 
alpha_rejection 对渲染管道的材质纹理进行alpha信息剪裁。 格式为 alpha_rejection
compareFun value
其中value取值范围是0-255,例如 alpha_rejection less_equal 122 则代表抛弃渲染管道中alpha值大于等于122的象素。附注:考虑到硬件兼容,Value最好是0-128之间。
 
   cull_hardware
硬件剔除方式。 格式为 cull_hardware HCutFun
HCutFun枚举下列三种方式:clockwise / anticlockwise/ none
clockwise将逆时针的三角型都cut掉(即CUT镜头反面)
anticlockwise将顺时针的三角型都cut掉(即CUT镜头正面)
none 不做任何剪切。
默认为 clockwise
 
cull_software
软件剪裁方式, 格式为 cull_software SCutFun
SCutFun 枚举以下三种格式:back / front / none
实际上,这个和硬件裁减是类似的,不过,对于一些动态的物件建议不要开启该项,消耗很大。默认是 back 剪裁。
 
 lighting
是否开启动态光照, 格式为 lighting on / off
注意:使用了顶点程序,此属性无效。动态光照一旦关闭,环境光反射,镜面反射光,放射光,阴影等属性均无效。默认为on
 
shading
Ogre着色方式 , 格式为 shading flat/ gouraud/ phong
Flat不进行插值,每个平面的阴影都由该平面的第一个顶点色决定。
Gouraud 对平面上每个顶点颜色进行线形插入计算。
Phong 全平面使用顶点法线向量。效果好,代价高,部份硬件无法支持此属性。
默认为 : gouraud
polygon_mode
栅格化方式。   格式为 polygon_mode solid/ wireframe/ points
面,线,点的栅格化。默认当然是面solid模式。
 
   fog_override
是否开启雾化。 fog_override true/false
当fog_override true的时候就需要顺序跟出以下参数
雾的type: none 无雾。 相当于fog_override false
           Linear 线性雾。 从 start到end之间有雾
           Exp 几何方次性雾。 受浓度 density 影响
           Exp2 几何二次方增加。 受浓度 density 影响
雾的颜色 color: RGB三种颜色值。0.0-1.0之间
雾的浓度 density:设置几何方次性雾的浓度。对线形雾不影响,但也必须写上进行占位。
雾的起始位置 start :对非线性雾无效,但必须写上占位。
雾的结束位置 end : 对非线性雾无效,但必须写上占位。
例如:fog_override true exp 1 1 1 0.002 100 10000 开启几何次方雾。颜色为1,1,1白色,浓度为0.002(若是线性则代表,离镜头100至10000之间的距离有雾)
 
 colour_write
是否关闭渲染通路的颜色写入功能。 colour_write on/off
该功能一旦关闭,则代表渲染通路不可输入任何的颜色渲染。仅在初期初始化深度缓冲区时个别时间有用。默认为开on
 
   max_lights
此渲染通路最大光源数量。一般使用默认为8 格式为 max_lights 8
 
iteration
是否对渲染通路进行迭代渲染。 默认为仅渲染一次,格式为Iteration once
Iteration 5 代表本渲染通路将被重复执行5次渲染。
Iteration once per_light point 则代表本渲染通道将每个光源点进行一次渲染。
Iteration 5 per_light point则代表本渲染通道将每个光源点进行5次渲染。
·   point_size
·   point_sprites
·   point_size_attenuation
·   point_size_min
·   point_size_max
ogre中的材质脚本_ogre中的材质脚本_Ogre_ ogre中的材质脚本 渲染通道处已经进行了一次整体的渲染环境设置 立即下载

相关推荐

【鸿蒙南向开发】OpenHarmony音频驱动audio适配方案

这份鸿蒙(HarmonyOS NEXT)文档包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

HarmonyOS_666的博客 4510

Ogre 中加载 material方法步骤^_^

                           Ogre 中加载 material方法步骤 1.创建一个ManualObject对象;2.设置索引号3.到目录../OgreSDK_vc9_v1-7-2/media/materials/scripts新建一个material文件Guide.materialCode: material MyMaterial1  

jxusthusiwen的专栏 2776

Android双目摄像头(RGB+IR)实时预览与人脸活体检测实战指南

本文详细介绍了Android双目摄像头(RGB+IR)实时预览与人脸活体检测的实战指南。通过双摄同步预览、人脸检测与活体判断等技术实现,提升安全认证的准确性和鲁棒性。文章还提供了开发环境搭建、常见问题解决方案及性能优化建议,帮助开发者快速掌握双目摄像头在Android平台的应用。

vulkan6gpu的博客 689

OGRE手动加载模型与材质

// [8/12/2010 Administrator] // 动态解析 材质脚本 //addMaterial(); { Ogre::FileInfoListPtr fileInfoList = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo( "General", "*.material"); for (Ogre::FileInfoList::const_iterator it =

butwang的专栏 4227

ROS自定义地图实战:从CAD到导航的完整流程

本文详细介绍了如何将CAD图纸或手绘草图高效转换为ROS机器人可直接使用的导航地图。通过解析PGM与YAML标准格式,提供从图像处理、尺度校准到集成AMCL与move_base导航栈的完整实战流程,帮助开发者跳过繁琐的SLAM建图,实现快速、精准的自定义地图部署。

weixin_29083475的博客 496

OpenClaw 接入智谱 GLM-5-Turbo 龙虾套餐:完整避坑指南与 SOP

OpenClaw 接入智谱 GLM-5-Turbo 的核心在于“端点匹配”和“多渠道验证”。端点匹配:龙虾套餐必须用标准端点。多渠道验证:遇到 TUI 不显示时,用curl或飞书机器人验证,不要被 Bug 误导。希望这份 SOP 能帮你顺利跑通 OpenClaw + GLM-5-Turbo,享受强大的 AI 编程助手!

Aaron_liu20的博客 1701

Ogre的渲染流程,在渲染时材质是如何起作用的,材质加载和解析

一个pass,最多16层贴图,8盏灯 OgreConfig.h /** Define max number of texture layers allowed per pass on any card. */ #define OGRE_MAX_TEXTURE_LAYERS 16 /** Define max number of lights allowed per p

fenxinzi557的博客 726

Slurm集群调度策略详解(1)-主调度

Slurm调度系统中针对作业的调度主要有三种,主调度,回填调度,GANG调度,这篇文章主要针对主调度进行解析。

h_m_l的博客 6029

Ogre材质脚本

光 材质与材质脚本 基本概念 Ogre的材质(Material)      为了优化渲染,必须把渲染状态的变化减少到最小。而最频繁的渲染状态改变是材料的变化(大多是纹理的变化)。 Ogre的Material类封装了物体的所有材料属性,类似于3D Studio中material的概念。平时不被认为是属于材料的属性,像culling模式和深度缓存设置等,也被Material包含近来了。因为这

shaoxiaoning的专栏 1411

深入解析DDR5 SDRAM的ODT模式:时序图与状态表实战指南

本文深入解析了DDR5 SDRAM的ODT模式,详细阐述了其五种工作状态及其在读写操作中的动态切换逻辑。通过解读JESD79-5标准中的时序图与状态表,并结合模式寄存器配置实战,为硬件工程师和爱好者提供了优化信号完整性、提升系统稳定性的关键指南。

gpu4optimizer的博客 699

2025华为od机试真题B卷【版本管理】JavaScript实现

在 软件版本管理中,版本号由点分割的数字组成,例如 1.2.3 和 2.8。现在,你需要编写一个函数,计算两个版本号之间的可用版本号个数。这里的可用版本号指的是所有满足 version1<x<version2的版本号x的个数。若 version1 >=version2 返回0.,

MISAYAONE的博客 254

ogre中的材质脚本

     资源组管理器初始化完毕时,装载材质脚本,OGRE会自动的在组相关的资源位置查找".materal”扩展名的文件,并对这些脚本进行语法解析。手动解析可以通过MaterialSerializer::parseScript()。但是注意的是:解析脚本时并没有对脚本中定义的全部纹理等资源进行加载,所以,在我们访问一个材质的时候,一定要确保它已经装载,或者,我们手动将此材质Load()一次再进行访

mikewolf2009的专栏 2224

2025年9月GESP(C++四级):排兵布阵

作为将军,你自然需要合理地排兵布阵。地图可以视为n行m列的网格,适合排兵的网格以 1 标注,不适合排兵的网格以 0 标注。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格?

王老师青少年编程 1380

【Ogre编程入门与进阶】第十二章 Ogre脚本、材质与纹理

12.1脚本 熟悉编程的同学一定对脚本不陌生。脚本(script)的原意是手稿、剧本,手稿可以修改涂抹,剧本指导演员去演。计算机中所运用的脚本也具有以上两个性质。 计算机中的脚本是用脚本语言编写,依据一定的格式编写的可执行文件,又称作宏或批处理文件。它使得本来要用键盘进行的相互式操作自动化。脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算

Everything is possible 3832

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Ogre 光,材质与材质脚本

Mage小组 著Email: norman_chen@163.com  renwind@163.comQQ: 18725262http://www.173d8.comhttp://blog.youkuaiyun.com/pizi0475 光材质与材质脚本基本概念Ogre的材质(Material)     为了优化渲染,必须把渲染状态的变化减少到最小。而最频繁的渲染状态改变是材料的变化(大多是纹理的变化

痞子龙3D编程 5847

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Ogre 材质与材质脚本

  材质与材质脚本  基本概念  Ogre的材质(Material)  为了优化渲染,必须把渲染状态的变化减少到最小。而最频繁的渲染状态改变是材料的变化(大多是纹理的变化)。  Ogre的Material类封装了物体的所有材料属性,类似于3D Studio中material的概念。平时不被认为是属于材料的属性,像culling模式和深度缓存设置等,也被Material包含近来了。因为这些属

贾府 1231

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ogre中的材质脚本 (转)

http://hi.baidu.com/icstudio/blog/item/63fd15df7536c5184954038c.html ogre中的材质脚本 (一) 资源组管理器初始化完毕时,装载材质脚本,OGRE会自动的在组相关的资源位置查找".materal”扩展名的文件,并对这些脚本进行语法解 析。手动解析可以通过MaterialSerializer::parseScript...

aigao1992的博客 315

OGRE的材质脚本 (一)

<br />ogre中的材质脚本 (一)<br />2009-12-18 17:28资源组管理器初始化完毕时,装载材质脚本,OGRE会自动的在组相关的资源位置查找".materal”扩展名的文件,并对这些脚本进行语法解 析。手动解析可以通过MaterialSerializer::parseScript()。但是注意的是:解析脚本时并没有对脚本中定义的全部纹理等资 源进行加载,所以,在我们访问一个材质的时候,一定要确保它已经装载,或者,我们手动将此材质Load()一次再进行访问。另外,材质名必须唯一,且不可

xiaosu123的专栏 990

细说 ogre 中的材质脚本

<br />版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明<br />http://ogre3d.blogbus.com/logs/78454487.html<br /><br /><br />资源组管理器初始化完毕时,装载材质脚本,OGRE会自动的在组相关的资源位置查找".materal”扩展名的文件,并对这些脚本进行语法解析。手动解析可以通过MaterialSerializer::parseScript()。但是注意的是:解析脚本时并没有对脚本中定义的全部纹理等资源进行加载,所以,在我

rbagglo的专栏 1715

OGRE中的材质脚本

资源组管理器初始化完毕时,装载材质脚本,OGRE会自动的在组相关的资源位置查找”.materal”扩展名的文件,并对这些脚本进行语法解析。手动解析可以通过MaterialSerializer::parseScript()。但是注意的是:解析脚本时并没有对脚本中定义的全部纹理等资源进行加载,所以,在我们访问一个材质的时候,一定要确保它已经装载,或者,我们手动将此材质Load()一次再进行访问。另外,材

fenxinzi557的博客 711
上一篇: OGRE 纹理单元 参数说明
下一篇: OGRE的材质脚本 (二)
凭谁问
博客等级 码龄15年 178粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值