GXS.RenderContextInfo.pas 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //
  2. // The graphics engine GLXEngine. The unit of GXScene for Delphi
  3. //
  4. unit GXS.RenderContextInfo;
  5. (* Stores contextual info useful during rendering methods *)
  6. interface
  7. {$I Stage.Defines.inc}
  8. uses
  9. Stage.VectorTypes,
  10. GXS.PersistentClasses,
  11. Stage.VectorGeometry,
  12. GXS.State,
  13. Stage.PipelineTransform,
  14. GXS.Color;
  15. type
  16. TGXDrawState = (dsRendering, dsPicking, dsPrinting);
  17. TGXSize = record
  18. cx: Longint;
  19. cy: Longint;
  20. end;
  21. (* Determines if objects are sorted, and how. Sorting is done level by level (and not for all entities), values are :
  22. osInherited : use inherited sorting mode, defaults to osRenderFarthestFirst
  23. osNone : do not sort objects.
  24. osRenderFarthestFirst : render objects whose Position is the farthest from the camera first.
  25. osRenderBlendedLast : opaque objects are not sorted and rendered first, blended ones are rendered afterwards and depth sorted.
  26. osRenderNearestFirst : render objects whose Position is the nearest to the camera first. *)
  27. TgxObjectsSorting = (osInherited, osNone,
  28. osRenderFarthestFirst, osRenderBlendedLast,
  29. osRenderNearestFirst);
  30. (* Determines the visibility culling mode.
  31. Culling is done level by level, allowed values are:
  32. vcInherited : use inherited culling value, if selected for the root level, defaults to vcNone
  33. vcNone : no visibility culling is performed
  34. vcObjectBased : culling is done on a per-object basis, each object may
  35. or may not be culled base on its own AxisAlignedDimensions,
  36. culling has no impact on the visibility of its children
  37. vcHierarchical : culling is performed hierarchically, using hierarchical
  38. bounding boxes, if a parent is culled, all of its children, whatever their
  39. culling options are invisible.
  40. Depending on the structure of your scene the most efficient culling
  41. method will be either vcObjectBased or vcHierarchical. Also note that if
  42. you use many objects with "static" geometry and have a T&L graphics
  43. board, it may be faster not to cull at all (ie. leave this to the hardware). *)
  44. TgxVisibilityCulling = (vcInherited, vcNone, vcObjectBased, vcHierarchical);
  45. TGXRenderContextClippingInfo = record
  46. origin: TVector4f;
  47. clippingDirection: TVector4f;
  48. viewPortRadius: Single; // viewport bounding radius per distance unit
  49. nearClippingDistance: Single;
  50. farClippingDistance: Single;
  51. frustum: TFrustum;
  52. end;
  53. // Stores contextual info useful during rendering methods.
  54. TgxRenderContextInfo = record
  55. scene: TObject; //usually TgxScene
  56. buffer: TObject; //usually TgxSceneBuffer
  57. cameraPosition: TVector4f;
  58. cameraDirection, cameraUp: TVector4f;
  59. viewPortSize: TGXSize;
  60. renderDPI: Integer;
  61. materialLibrary: TObject; //usually TgxMaterialLibrary;
  62. lightmapLibrary: TObject; //usually TgxMaterialLibrary;
  63. fogDisabledCounter: Integer;
  64. drawState: TGXDrawState;
  65. objectsSorting: TgxObjectsSorting;
  66. visibilityCulling: TgxVisibilityCulling;
  67. gxStates: TgxStateCache;
  68. PipelineTransformation: TgTransformation;
  69. rcci: TGXRenderContextClippingInfo;
  70. sceneAmbientColor: TgxColorVector;
  71. bufferFaceCull: Boolean;
  72. bufferLighting: Boolean;
  73. bufferFog: Boolean;
  74. bufferDepthTest: Boolean;
  75. proxySubObject: Boolean;
  76. ignoreMaterials: Boolean;
  77. ignoreBlendingRequests: Boolean;
  78. ignoreDepthRequests: Boolean;
  79. amalgamating: Boolean;
  80. lights: TgxPersistentObjectList;
  81. afterRenderEffects: TgxPersistentObjectList;
  82. currentMaterialLevel: TgxMaterialLevel;
  83. primitiveMask: TgxMeshPrimitives;
  84. orderCounter: Integer;
  85. end;
  86. PGXRenderContextInfo = ^TgxRenderContextInfo;
  87. implementation //-------------------------------------------------------------
  88. end.