Changeset 845a2cb in opengl-game for vulkan-game.hpp


Ignore:
Timestamp:
Apr 22, 2020, 12:58:07 AM (4 years ago)
Author:
Dmitry Portnoy <dmitry.portnoy@…>
Branches:
points-test
Parents:
73a10ca
Message:

test point size

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vulkan-game.hpp

    r73a10ca r845a2cb  
    5757};
    5858
    59 struct UBO_VP_mats {
    60    alignas(16) mat4 view;
    61    alignas(16) mat4 proj;
     59struct ExplosionVertex {
     60   vec3 particleStartVelocity;
     61   float particleStartTime;
     62   unsigned int objIndex;
    6263};
    6364
     
    7677   alignas(4) vec3 color;
    7778   alignas(4) unsigned int deleted;
     79};
     80
     81struct SSBO_Explosion {
     82   alignas(16) mat4 model;
     83   alignas(4) float explosionStartTime;
     84   alignas(4) float explosionDuration;
     85   alignas(4) unsigned int deleted;
     86};
     87
     88struct UBO_VP_mats {
     89   alignas(16) mat4 view;
     90   alignas(16) mat4 proj;
     91};
     92
     93struct UBO_Explosion {
     94   alignas(16) mat4 view;
     95   alignas(16) mat4 proj;
     96   alignas(4) float cur_time;
    7897};
    7998
     
    175194
    176195   private:
     196      // TODO: Make these consts static
     197
    177198      const int MAX_FRAMES_IN_FLIGHT;
    178199
     
    180201      const float FAR_CLIP = 100.0f;
    181202      const float FOV_ANGLE = 67.0f; // means the camera lens goes from -33 deg to 33 def
     203
     204      const int EXPLOSION_PARTICLE_COUNT = 300;
    182205
    183206      vec3 cam_pos;
     
    285308
    286309      UBO_VP_mats laser_VP_mats;
     310
     311      GraphicsPipeline_Vulkan<ExplosionVertex, SSBO_Explosion> explosionPipeline;
     312      vector<SceneObject<ExplosionVertex, SSBO_Explosion>> explosionObjects;
     313
     314      vector<VkBuffer> uniformBuffers_explosionPipeline;
     315      vector<VkDeviceMemory> uniformBuffersMemory_explosionPipeline;
     316      vector<VkDescriptorBufferInfo> uniformBufferInfoList_explosionPipeline;
     317
     318      UBO_Explosion explosion_UBO;
    287319
    288320      vector<BaseEffectOverTime*> effects;
     
    334366      void createSyncObjects();
    335367
    336       void addLaser(vec3 start, vec3 end, vec3 color, float width);
    337       void translateLaser(size_t index, const vec3& translation);
    338       void updateLaserTarget(size_t index);
    339       bool getLaserAndAsteroidIntersection(SceneObject<AsteroidVertex, SSBO_Asteroid>& asteroid,
    340             vec3& start, vec3& end, vec3& intersection);
    341 
    342368      // TODO: Since addObject() returns a reference to the new object now,
    343369      // stop using objects.back() to access the object that was just created
     
    366392      void centerObject(SceneObject<VertexType, SSBOType>& object);
    367393
     394      void addLaser(vec3 start, vec3 end, vec3 color, float width);
     395      void translateLaser(size_t index, const vec3& translation);
     396      void updateLaserTarget(size_t index);
     397      bool getLaserAndAsteroidIntersection(SceneObject<AsteroidVertex, SSBO_Asteroid>& asteroid,
     398            vec3& start, vec3& end, vec3& intersection);
     399
     400      void addExplosion(mat4 model_mat, float duration, float cur_time);
     401
    368402      void createBufferSet(VkDeviceSize bufferSize, VkBufferUsageFlags flags,
    369403            vector<VkBuffer>& buffers, vector<VkDeviceMemory>& buffersMemory,
     
    380414            void* pUserData);
    381415};
     416
     417// Start of specialized no-op functions
     418
     419template<>
     420inline void VulkanGame::centerObject(SceneObject<ExplosionVertex, SSBO_Explosion>& object) {
     421}
     422
     423// End of specialized no-op functions
    382424
    383425// TODO: Right now, it's basically necessary to pass the identity matrix in for ssbo.model
     
    407449   SceneObject<VertexType, SSBOType>& obj = objects.back();
    408450
    409    if (!is_same_v<VertexType, LaserVertex>) {
     451   if (!is_same_v<VertexType, LaserVertex> && !is_same_v<VertexType, ExplosionVertex>) {
    410452      centerObject(obj);
    411453   }
Note: See TracChangeset for help on using the changeset viewer.