Advertisement
Guest User

cegui-ogre-2.1-pso

a guest
May 6th, 2017
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.51 KB | None | 0 0
  1. Index: cegui-0.8.7/cegui/src/RendererModules/Ogre/GeometryBuffer.cpp
  2. IDEA additional info:
  3. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  4. <+>UTF-8
  5. ===================================================================
  6. --- cegui-0.8.7/cegui/src/RendererModules/Ogre/GeometryBuffer.cpp   (revision 6f5c3e82eb608c5119a671efe675f6cceedb768e)
  7. +++ cegui-0.8.7/cegui/src/RendererModules/Ogre/GeometryBuffer.cpp   (revision )
  8. @@ -96,7 +96,7 @@
  9.  
  10.      // basic initialisation of render op
  11.      rop.vertexData = OGRE_NEW VertexData();
  12. -    rop.operationType = RenderOperation::OT_TRIANGLE_LIST;
  13. +    rop.operationType = OT_TRIANGLE_LIST;
  14.      rop.useIndexes = false;
  15.  
  16.      // setup vertex declaration for format we will use
  17. Index: cegui-0.8.7/cegui/src/RendererModules/Ogre/Renderer.cpp
  18. IDEA additional info:
  19. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  20. <+>UTF-8
  21. ===================================================================
  22. --- cegui-0.8.7/cegui/src/RendererModules/Ogre/Renderer.cpp (revision 6f5c3e82eb608c5119a671efe675f6cceedb768e)
  23. +++ cegui-0.8.7/cegui/src/RendererModules/Ogre/Renderer.cpp (revision )
  24. @@ -308,6 +308,8 @@
  25.      const Ogre::HlmsBlendblock* d_hlmsBlendblock;
  26.      //! HLMS block used to set sampling parameters
  27.      const Ogre::HlmsSamplerblock* d_hlmsSamplerblock;
  28. +    //! HLMS cache used to store pso
  29. +    Ogre::SharedPtr<Ogre::HlmsCache> d_hlmsCache;
  30.  #endif
  31.      //! What we think is the current blend mode to use
  32.      BlendMode d_activeBlendMode;
  33. @@ -988,13 +990,25 @@
  34.  
  35.      d_pimpl->d_pixelShaderParameters =
  36.          d_pimpl->d_pixelShader->createParameters();
  37. -}
  38. +
  39. +#ifdef CEGUI_USE_OGRE_HLMS
  40. +    d_pimpl->d_hlmsCache = Ogre::SharedPtr<Ogre::HlmsCache>(new Ogre::HlmsCache);
  41. +    d_pimpl->d_hlmsCache->pso.vertexShader = d_pimpl->d_vertexShader;
  42. +    d_pimpl->d_hlmsCache->pso.pixelShader = d_pimpl->d_pixelShader;
  43. +    d_pimpl->d_hlmsCache->pso.blendblock = const_cast<Ogre::HlmsBlendblock*>(d_pimpl->d_hlmsBlendblock);
  44. +    d_pimpl->d_hlmsCache->pso.macroblock = const_cast<Ogre::HlmsMacroblock*>(d_pimpl->d_hlmsMacroblock);
  45. +#endif
  46. +    }
  47.  
  48.  //----------------------------------------------------------------------------//
  49.  void OgreRenderer::cleanupShaders()
  50.  {
  51.  #ifdef CEGUI_USE_OGRE_HLMS
  52.      Ogre::HlmsManager* hlmsManager = d_pimpl->d_ogreRoot->getHlmsManager();
  53. +    if (d_pimpl->d_hlmsCache != NULL) {
  54. +        d_pimpl->d_renderSystem->_hlmsPipelineStateObjectDestroyed(&d_pimpl->d_hlmsCache->pso);
  55. +        d_pimpl->d_hlmsCache.setNull();
  56. +    }
  57.  
  58.      if (d_pimpl->d_hlmsBlendblock != NULL)
  59.          hlmsManager->destroyBlendblock(d_pimpl->d_hlmsBlendblock);
  60. @@ -1036,10 +1050,7 @@
  61.  
  62.      d_pimpl->d_activeBlendMode = mode;
  63.  
  64. -#ifdef CEGUI_USE_OGRE_HLMS
  65. -    // Apply the HLMS blend block to the render system
  66. -    d_pimpl->d_renderSystem->_setHlmsBlendblock(d_pimpl->d_hlmsBlendblock);
  67. -#else
  68. +#ifndef CEGUI_USE_OGRE_HLMS
  69.      if (d_pimpl->d_activeBlendMode == BM_RTT_PREMULTIPLIED)
  70.          d_pimpl->d_renderSystem->_setSceneBlending(SBF_ONE,
  71.                                                      SBF_ONE_MINUS_SOURCE_ALPHA);
  72. @@ -1076,10 +1087,7 @@
  73.      using namespace Ogre;
  74.  
  75.      // initialise render settings
  76. -#ifdef CEGUI_USE_OGRE_HLMS
  77. -    // Apply the HLMS macro block to the render system
  78. -    d_pimpl->d_renderSystem->_setHlmsMacroblock(d_pimpl->d_hlmsMacroblock);
  79. -#else
  80. +#ifndef CEGUI_USE_OGRE_HLMS
  81.      d_pimpl->d_renderSystem->setLightingEnabled(false);
  82.      d_pimpl->d_renderSystem->_setDepthBufferParams(false, false);
  83.      d_pimpl->d_renderSystem->_setDepthBias(0, 0);
  84. @@ -1108,10 +1116,8 @@
  85.      if (isUsingShaders())
  86.      {
  87.  #ifdef CEGUI_USE_OGRE_HLMS
  88. -        Ogre::HlmsCache hlmsCache;
  89. -        hlmsCache.vertexShader = d_pimpl->d_vertexShader;
  90. -        hlmsCache.pixelShader = d_pimpl->d_pixelShader;
  91. -        d_pimpl->d_renderSystem->_setProgramsFromHlms(&hlmsCache);
  92. +        d_pimpl->d_renderSystem->_hlmsPipelineStateObjectCreated(&d_pimpl->d_hlmsCache->pso);
  93. +        d_pimpl->d_renderSystem->_setPipelineStateObject(&d_pimpl->d_hlmsCache->pso);
  94.  #else
  95.          if (Ogre::GpuProgram* prog = d_pimpl->d_vertexShader->_getBindingDelegate())
  96.              d_pimpl->d_renderSystem->bindGpuProgram(prog);
  97. @@ -1122,8 +1128,12 @@
  98.      }
  99.      else
  100.      {
  101. +#ifdef CEGUI_USE_OGRE_HLMS
  102. +        d_pimpl->d_renderSystem->_setPipelineStateObject( 0 );
  103. +#else
  104.          d_pimpl->d_renderSystem->unbindGpuProgram(Ogre::GPT_VERTEX_PROGRAM);
  105.          d_pimpl->d_renderSystem->unbindGpuProgram(Ogre::GPT_FRAGMENT_PROGRAM);
  106. +#endif
  107.      }
  108.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement