[转]Ogre Script Cache Plugin

http://www.ogre3d.org/tikiwiki/Script+Cache+Plugin

 

Table of contents

 

Introduction

Script Cache

The Script Cache plugin attempts to speed up the time taken to parse resource script (like *.material, *.program etc). This is done by caching the binary representation of the compiled script (in memory) to disk, when the application is run the first time. Then on subsequent runs, the scripts would no longer be re-compiled again since their binary representation is already present in the cache. However, if the script is modified by the user, the cache would automatically be discarded and the modified version would be compiled and cached again.

Shader Cache

Ogre 1.8 introduced a new feature called ShaderCache. The plugin automatically uses the ShaderCache feature if compiled with Ogre 1.8+. The plugin would not use ShaderCache for Ogre 1.7 and below

Compiling

Download the latest code from here:
http://code.google.com/p/ogre-script-serializer/source/checkoutclip_image002

Use CMake to create the build system

Build the plugin. You should see the following modules:

  • Plugin_ScriptSerializer (Release mode)
  • Plugin_ScriptSerializer_d (Debug Mode)

Setup

  • After you have compiled your plugin, copy it over to your plugins folder (e.g. along side RenderSystem_OpenGL, Plugin_ParticleFX etc)
  • Open plugins.cfg and add an new entry for this new plugin.

Plugin=Plugin_ScriptSerializer

  • Create a new config file for this plugin named ScriptCache.cfg in your executable folder with the following contents

 

· [ScriptCache]

· extension=.sbin

· location=./ScriptCache

· searchExtensions=program material particle compositor os pu

·

· [ShaderCache]

filename=Shaders.cache

 

    • ScriptCache.extension: The extension to use when saving the compiled binary script
    • ScriptCache.location: The directory where the script cache should be saved. If this directory is unavailable, the plugin would attempt to create this directory. If it fails to create this directory, or if the directory is read-only, then the plugin would log a warning and disable itself. This path can have absolute or relative addressing
    • ScriptCache.searchExtensions:
    • ShaderCache.filename: The filename to use for the shader cache. This file would be saved in the location specified in ScriptCache.location. Provide only the filename here and not the path

 

  • If the above config file is not present, the plugin would use default values (same as the above mentioned config file)
  • Run your application. The first time, the plugin should create the cache directory and fill it with the compiled scripts. You should be able to notice performance improvements after the first run

Note: The Script Cache directory should not be added to your resources.cfg if you include your plain-text scripts. However, if you wish to deploy only the binary scripts, then remove the references to your plain-text scripts and add the Script Cache directory to resources.cfg.

 

Benchmark

Here is the time it took to compile the scripts and startup the sample browser:
clip_image003
clip_image004

Advantages

  • ScriptCache Reduces the script compilation time in Debug Mode significantly
  • Ogre's built in ShaderCache reduces the shader compilation time in both Debug and Release mode

Drawbacks

  • ScriptCache has no noticeable performance gain in Release mode. However ShaderCache boosts the speed considerably in Release mode

License

Released under MIT licence, similar to OGRE

References

Tracking Thread: http://www.ogre3d.org/forums/viewtopic.php?f=11&t=62487clip_image002[1]
Download Code: http://code.google.com/p/ogre-script-serializer/clip_image002[2]


Contributors to this page: CoreDumpedclip_image005  .
Page last modified on Wednesday 02 of February, 2011 23:06:39 UTC by CoreDumpedclip_image005[1] .


 

 

Ogre 1.8 Shader Cache

http://www.ogre3d.org/forums/viewtopic.php?f=4&t=61004

 

The idea is to save a cache before you release the product or at the first run on the client computer - and from then on use the cache to load shaders without compiling them.

If you want to save shaders to the cache:
* Before the resource load call GpuProgramManager::getSingleton().setSaveMicrocodesToCache(true);
* When you want to save the cache to a file call - GpuProgramManager::getSingleton().saveMicrocodeCache(...);

When you want to use the cache: 
* Before the resource load call - GpuProgramManager::getSingleton().loadMicrocodeCache(...);

posted @   Pulaski  阅读(567)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示