Commit 298d2f3b authored by OjadYref's avatar OjadYref

Add license | Add comments

parent 90345ef3
MIT License
Copyright (c) 2020 Dajo Frey
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
......@@ -14,29 +14,29 @@ RAYTRACING PERFORMANCE TEST (dragon sphere-packing)
1 2 3 4 5
5k, no acceleration : NULL Seconds 0.398 Seconds 0.25 Seconds 0.181 Seconds 0.093 Seconds
50k, no acceleration : NULL Seconds 1.904 Seconds 1.86 Seconds 1.321 Seconds 0.531 Seconds
100k, no acceleration: TODO Seconds 3.560 Seconds 3.69 Seconds 2.871 Seconds 0.687 Seconds
150k, no acceleration: TODO Seconds 5.970 Seconds 5.60 Seconds 4.380 Seconds 1.000 Seconds
200k, no acceleration: TODO Seconds 8.990 Seconds 8.08 Seconds 5.297 Seconds 2.375 Seconds
250k, no acceleration: TODO Seconds 9.990 Seconds 11.4 Seconds 7.206 Seconds 2.796 Seconds
300k, no acceleration: TODO Seconds 11.72 Seconds 14.1 Seconds 8.705 Seconds 5.296 Seconds
100k, no acceleration: NULL Seconds 3.560 Seconds 3.69 Seconds 2.871 Seconds 0.687 Seconds
150k, no acceleration: NULL Seconds 5.970 Seconds 5.60 Seconds 4.380 Seconds 1.000 Seconds
200k, no acceleration: NULL Seconds 8.990 Seconds 8.08 Seconds 5.297 Seconds 2.375 Seconds
250k, no acceleration: NULL Seconds 9.990 Seconds 11.4 Seconds 7.206 Seconds 2.796 Seconds
300k, no acceleration: NULL Seconds 11.72 Seconds 14.1 Seconds 8.705 Seconds 5.296 Seconds
1 2 3 4 5
5k, bvh : TODO Seconds 0.030 Seconds 0.10 Seconds 0.038 Seconds 0.015 Seconds
50k, bvh : TODO Seconds 0.130 Seconds 0.22 Seconds 0.105 Seconds 0.078 Seconds
100k, bvh: TODO Seconds 0.336 Seconds 0.56 Seconds 0.175 Seconds 0.109 Seconds
150k, bvh: TODO Seconds 0.575 Seconds 0.75 Seconds 0.315 Seconds 0.078 Seconds
200k, bvh: TODO Seconds 0.926 Seconds 1.23 Seconds 0.525 Seconds 0.109 Seconds
250k, bvh: TODO Seconds 1.307 Seconds 1.77 Seconds 0.872 Seconds 0.359 Seconds
300k, bvh: TODO Seconds 1.390 Seconds 2.05 Seconds 1.151 Seconds 0.422 Seconds
5k, bvh : NULL Seconds 0.030 Seconds 0.10 Seconds 0.038 Seconds 0.015 Seconds
50k, bvh : NULL Seconds 0.130 Seconds 0.22 Seconds 0.105 Seconds 0.078 Seconds
100k, bvh: NULL Seconds 0.336 Seconds 0.56 Seconds 0.175 Seconds 0.109 Seconds
150k, bvh: NULL Seconds 0.575 Seconds 0.75 Seconds 0.315 Seconds 0.078 Seconds
200k, bvh: NULL Seconds 0.926 Seconds 1.23 Seconds 0.525 Seconds 0.109 Seconds
250k, bvh: NULL Seconds 1.307 Seconds 1.77 Seconds 0.872 Seconds 0.359 Seconds
300k, bvh: NULL Seconds 1.390 Seconds 2.05 Seconds 1.151 Seconds 0.422 Seconds
1 2 3 4 5
5k, grid : TODO Seconds 0.052 Seconds 0.14 Seconds 0.029 Seconds 0.015 Seconds
50k, grid : TODO Seconds 0.270 Seconds 0.34 Seconds 0.179 Seconds 0.047 Seconds
100k, grid: TODO Seconds 0.518 Seconds 0.72 Seconds 0.322 Seconds 0.078 Seconds
150k, grid: TODO Seconds 0.767 Seconds 1.15 Seconds 0.489 Seconds 0.110 Seconds
200k, grid: TODO Seconds 1.149 Seconds 1.67 Seconds 0.750 Seconds 0.141 Seconds
250k, grid: TODO Seconds 1.489 Seconds 2.17 Seconds 1.077 Seconds 0.266 Seconds
300k, grid: TODO Seconds 2.560 Seconds 2.84 Seconds 1.321 Seconds 0.437 Seconds
5k, grid : NULL Seconds 0.052 Seconds 0.14 Seconds 0.029 Seconds 0.015 Seconds
50k, grid : NULL Seconds 0.270 Seconds 0.34 Seconds 0.179 Seconds 0.047 Seconds
100k, grid: NULL Seconds 0.518 Seconds 0.72 Seconds 0.322 Seconds 0.078 Seconds
150k, grid: NULL Seconds 0.767 Seconds 1.15 Seconds 0.489 Seconds 0.110 Seconds
200k, grid: NULL Seconds 1.149 Seconds 1.67 Seconds 0.750 Seconds 0.141 Seconds
250k, grid: NULL Seconds 1.489 Seconds 2.17 Seconds 1.077 Seconds 0.266 Seconds
300k, grid: NULL Seconds 2.560 Seconds 2.84 Seconds 1.321 Seconds 0.437 Seconds
---------------------------
......@@ -72,4 +72,4 @@ METABALLS PERFORMANCE TEST (dragon sphere-packing, 1.39 Thresh)
3 5
2k, 9.01 Seconds 2.13 Seconds
5K, 16.4 Seconds 4.63 Seconds
10K, 22.3 Seconds 11.1 Seconds
\ No newline at end of file
10K, 22.3 Seconds 11.1 Seconds
- remove auto shader comp
- finish GUI
- finish doc
// Include frequently used files
#ifndef PR_COMMON_H
#define PR_COMMON_H
......
......@@ -6,7 +6,7 @@
*/
/**
* Handle types. These are used for heap allocation procedures.
* Handle types. These are used for heap-allocation procedures.
*/
typedef enum PR_HandleType {
HANDLE_TYPE_DEVICE, /**<A PR_Device handle.*/
......
......@@ -6,7 +6,7 @@
*/
/**
* General instance status.
* General instance status. Can be extended at will.
*/
typedef enum PR_InstanceStatus {
INSTANCE_STATUS_UNDEFINED, /**<Status unknown.*/
......
// Math library
#ifndef PR_CGLM_H
#define PR_CGLM_H
......
// GUI library
#ifndef PR_IMGUI_H
#define PR_IMGUI_H
......
// Vulkan function loader
#ifndef PR_VOLK_H
#define PR_VOLK_H
......
// .ini file reader. Currently not used.
#ifndef PR_INI_H
#define PR_INI_H
......
// Linux threadpool implementation.
#ifndef PR_THPOOL_H
#define PR_THPOOL_H
......
......@@ -20,6 +20,7 @@
///
//
// Handle sizes in byte.
static size_t handleSize_p[NUMBER_OF_HANDLE_TYPES] = {
sizeof(PR_Device),
sizeof(PR_Window),
......@@ -34,6 +35,7 @@ static size_t handleSize_p[NUMBER_OF_HANDLE_TYPES] = {
///
//
// Allocate a memory-chunk of the specified handle type.
static PR_Result allocateChunk(
PR_Data *Data_p, PR_HandleType HandleType
);
......
......@@ -9,7 +9,7 @@
#include "../Structs/Thread.h"
/**
* Retrieve a allocated handle of the specified type.
* Retrieve an allocated handle of the specified type.
*
* @param *Thread_p The calling thread.
* @param HandleType The handle type.
......
......@@ -19,6 +19,7 @@
///
//
// Free all associated data.
static PR_Result freeData(
PR_Data *Data_p
);
......
......@@ -17,12 +17,15 @@
///
//
// Default configuration.
static PR_Result getDefaultConfig(
PR_Instance *Instance_p
);
// .ini configuration. Currently not used.
static PR_Result parseConfig(
const char* filePath_p, void *user
);
// Handler regarding .ini configuration.
static PR_Result handler(
void* user, const char* section, const char* name, const char* value
);
......
......@@ -12,6 +12,7 @@
* Init the instance.
*
* @param *Instance_p The instance.
* @param *configPath_p String of a .ini file-path. Must be NULL.
*/
PR_Result PR_initInstance(
PR_Instance *Instance_p, const char *configPath_p
......
......@@ -24,6 +24,7 @@
///
//
// Create memory related data.
static PR_Result createData(
PR_Instance *Instance_p, PR_Data *Data_p
);
......
......@@ -10,6 +10,9 @@
/**
* Perform thread-init routines.
*
* @param *Instance_p The instance.
* @param **Thread_pp Thread on which to perform initialization.
*/
PR_Result PR_initThread(
void *Instance_p, PR_Thread **Thread_pp
......
......@@ -10,6 +10,10 @@
/**
* Checks if a handle was correctly allocated.
*
* @param *Thread_p The thread context.
* @param HandleType The handle type.
* @param Id Memory index.
*/
PR_Result PR_isHandleValid(
PR_Thread *Thread_p, PR_HandleType HandleType, PR_Id Id
......
......@@ -12,6 +12,7 @@
#define _PR_WARNING
#endif
// Function entry. Could be used to gather meta data.
#ifdef _PR_BEGIN
#define PR_BEGIN() \
{ \
......@@ -20,6 +21,7 @@
#define PR_BEGIN()
#endif
// Function exit. See above.
#ifdef _PR_END
#define PR_END(result) \
{ \
......@@ -50,26 +52,37 @@
#define PR_WARNING(message)
#endif
// Get device from local thread using device id.
#define GET_DEVICE(DeviceId) &((PR_Device*)Thread_p->Data.handle_pp[HANDLE_TYPE_DEVICE])[DeviceId]
// Get device from global thread using device id.
#define GET_DEVICE_2(ThreadId, DeviceId) &((PR_Device*)Instance_p->Thread_p[ThreadId].Data.handle_pp[HANDLE_TYPE_DEVICE])[DeviceId]
// Get total device count.
#define GET_DEVICE_COUNT() Thread_p->Data.handleAcquiredCount_p[HANDLE_TYPE_DEVICE]
// Get window from local thread using window id.
#define GET_WINDOW(WindowId) &((PR_Window*)Thread_p->Data.handle_pp[HANDLE_TYPE_WINDOW])[WindowId]
// Get window from global thread using window id.
#define GET_WINDOW_2(ThreadId, WindowId) &((PR_Window*)Instance_p->Thread_p[ThreadId].Data.handle_pp[HANDLE_TYPE_WINDOW])[WindowId]
// Get total window count.
#define GET_WINDOW_COUNT() Thread_p->Data.handleAcquiredCount_p[HANDLE_TYPE_WINDOW]
// Get VkLink from local thread using VkLink id.
#define GET_VK_LINK(VkLinkId) &((PR_VkLink*)Thread_p->Data.handle_pp[HANDLE_TYPE_VK_LINK])[VkLinkId]
// Get VkLink from global thread using VkLink id.
#define GET_VK_LINK_2(ThreadId, VkLinkId) &((PR_VkLink*)Instance_p->Thread_p[ThreadId].Data.handle_pp[HANDLE_TYPE_VK_LINK])[VkLinkId]
// Get RenderTask from local thread using RenderTask id.
#define GET_RENDER_TASK(Id) &((PR_RenderTask*)Thread_p->Data.handle_pp[HANDLE_TYPE_RENDER_TASK])[Id]
// Get total RenderTask count.
#define GET_RENDER_TASK_COUNT() Thread_p->Data.handleAcquiredCount_p[HANDLE_TYPE_RENDER_TASK]
// Get sphere from local thread using sphere index.
#define GET_SPHERE(index) &((PR_Sphere*)Thread_p->Data.handle_pp[HANDLE_TYPE_SPHERE])[index]
#endif // PR_MACROS_H
......@@ -25,6 +25,7 @@
///
//
// Vulkan related push-constants data. https://stackoverflow.com/questions/50956414/what-is-a-push-constant-in-vulkan
typedef struct PushConstants {
#if !defined(_MSC_VER)
_Alignas(8) float scale[2];
......@@ -41,12 +42,15 @@ typedef struct PushConstants {
///
//
// Initialize Vulkan related resources.
static PR_Result initResources(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_Device *Device_p, PR_VkImGui *VkImGui_p
);
// Create a shader module.
static PR_Result createShaderModule(
PR_VkDeviceLink *VkDeviceLink_p, const uint32_t *code, size_t size, VkShaderModule *shaderModule_p
);
// Get fitting memory type.
static PR_Result getMemoryType(
PR_Instance *Instance_p, VkPhysicalDevice *VkPhysicalDevice_p, uint32_t typeBits, VkMemoryPropertyFlags properties,
uint32_t *memoryType_p
......
......@@ -10,6 +10,12 @@
/**
* Creates necessary resources for ImGui. Only called once at runtime.
*
* @param *Instance_p The instance.
* @param *Thread_p The related thread structure.
* @param *Window_p Related window.
* @param *Device_p Related device.
* @param *VkImGui_p Data structure which contains the created resources.
*/
PR_Result PR_createImGuiResources(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_Window *Window_p, PR_Device *Device_p,
......
......@@ -20,6 +20,7 @@
///
//
// Vulkan related push-constants data. https://stackoverflow.com/questions/50956414/what-is-a-push-constant-in-vulkan
typedef struct PushConstants {
#if !defined(_MSC_VER)
_Alignas(8) float scale[2];
......@@ -158,7 +159,7 @@ PR_BEGIN()
pushConstBlock.translate[1] = -1.0f;
VkDeviceLink_p->Driver.vkCmdPushConstants(*VkCommandBuffer_p, VkImGui_p->pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(PushConstants), &pushConstBlock);
// Render commands
// Render-commands
ImDrawData *imDrawData = igGetDrawData();
int32_t vertexOffset = 0;
int32_t indexOffset = 0;
......
......@@ -9,6 +9,11 @@
/**
* Get the ImGui scene definition. This is the place where the GUI look is defined.
*
* @param *Instance_p The instance.
* @param *Thread_p The related thread structure.
* @param *Window_p Related window.
* @param *Device_p Related device.
*/
PR_Result PR_getImGuiFrame(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_Window *Window_p, PR_Device *Device_p
......
......@@ -8,7 +8,12 @@
#include "../../Core/Common.h"
/**
* Update vertex/texture/etc. buffer.
* Update vertex/texture/etc. buffer regarding the GUI.
*
* @param *Instance_p The instance.
* @param *Thread_p The related thread structure.
* @param *Window_p Related window.
* @param *Device_p Related device.
*/
PR_Result PR_updateImGuiBuffer(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_Window *Window_p, PR_Device *Device_p
......
......@@ -13,22 +13,22 @@
#include <stdbool.h>
/**
* General GUI information.
* General GUI information, settings and resources.
*/
typedef struct PR_GUI {
PR_GUIType Type;
bool showScene;
bool showGUI;
bool showHelp;
bool showInfo;
bool showController;
bool showKeyBindings;
bool showRender;
bool showRenderSettings;
PR_GUIType Type; /**<GUI type.*/
bool showScene; /**<Show scene?*/
bool showGUI; /**<Show GUI?*/
bool showHelp; /**<Show help dialog?*/
bool showInfo; /**<Show info dialog?*/
bool showController; /**<Show controller dialog?*/
bool showKeyBindings; /**<Show key-bindings dialog?*/
bool showRender; /**<Show render?*/
bool showRenderSettings; /**<Show render-settings?*/
unsigned int chunkSize;
PR_Id RenderTaskIndex;
PR_Id lastRenderTaskIndex;
PR_VkImGui VkImGui_p[3];
PR_Id RenderTaskIndex; /**<Index to the rendertask which is shown.*/
PR_Id lastRenderTaskIndex; /**<Index to the last rendertask which was shown.*/
PR_VkImGui VkImGui_p[3]; /**<GUI device data for a max of 3 different devices.*/
} PR_GUI;
/** @} */
......
......@@ -15,6 +15,10 @@
/**
* Creates structures of devices the application will use.
*
* @param *Instance_p The instance.
* @param *Thread_p Related thread structure.
* @param Type Driver type which will be used to search for devices and init them.
*/
PR_Result PR_createDevices(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_DriverType Type
......
......@@ -10,6 +10,11 @@
/**
* Creates window resources based on the window type. Window resources are mostly driver specific.
*
* @param *Instance_p The instance.
* @param *Thread_p Related thread structure.
* @param *Window_p Related window.
* @param *Device_p Related device.
*/
PR_Result PR_createWindowResources(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_Window *Window_p, PR_Device *Device_p, PR_WindowType WindowType,
......
......@@ -8,8 +8,13 @@
#include "../../../Core/Common.h"
/**
* Resize a window. This function handles everything resize-related including driver specific
* Resize a window. This function handles everything resize-related, including driver specific
* routines.
*
* @param *Instance_p The instance.
* @param *Thread_p Related thread structure.
* @param *Window_p Related window.
* @param *Device_p Related device.
*/
PR_Result PR_resizeWindow(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_Window *Window_p, PR_Device *Device_p
......
......@@ -9,6 +9,8 @@
/**
* Get user-input. This function interacts with the WSI and runs in its own thread.
*
* @param *Instance_p The instance.
*/
PR_Result PR_runInputLoop(
PR_Instance *Instance_p
......
......@@ -36,13 +36,16 @@
///
//
// Submit compute shader related tasks to the GPU.
static PR_Result submitCompute(
PR_Thread *Thread_p, PR_RenderTask *RenderTask_p, PR_VkTask *VkTask_p, PR_VkCommandBuffer2 **VkCommandBuffer2_pp,
VkQueue *VkQueue_p, PR_Device *Device_p, PR_Window *Window_p
);
// Update GUI presentation.
static PR_Result updateGUI(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_VkImGui *VkImGui_p, PR_Window *Window_p, PR_Device *Device_p, int currentImage
);
// Resize window.
static PR_Result resize(
PR_Instance *Instance_p, PR_Thread *Thread_p, PR_Device *Device_p, PR_Window *Window_p
);
......
......@@ -18,6 +18,8 @@ typedef struct PR_RunRenderLoopArgs {
/**
* Run the render loop. Runs using its own thread.
*
* @param *RunRenderLoopArgs_p PR_RunRenderLoopArgs structure pointer.
*/
void PR_runRenderLoop(
void *RunRenderLoopArgs_p
......
......@@ -9,6 +9,9 @@
/**
* Start the application. Runs start-up routines and creates essential resources.
*
* @param *Instance_p The instance.
* @param *Thread_p Related thread structure.
*/
PR_Result PR_startUp(
PR_Instance *Instance_p, PR_Thread *Thread_p
......
......@@ -9,6 +9,8 @@
/**
* Terminate the application.
*
* @param *Instance_p The instance.
*/
PR_Result PR_terminate(
PR_Instance *Instance_p
......
......@@ -27,31 +27,40 @@
///
//
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice.html
static PR_Result createPhysicalDevice(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p, int deviceIndex
);
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDevice.html
static PR_Result createDevice(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p
);
// Create Debug messenger.
static PR_Result createMessenger(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p
);
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPool.html
static PR_Result createDescriptorPool(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p
);
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPool.html
static PR_Result createCommandPool(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p
);
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPass.html
static PR_Result createRenderPass(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p
);
// Get surface format of window.
static PR_Result getSurfaceFormat(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p, VkSurfaceFormatKHR *surfaceFormat_p
);
// Is device suitable for rendering?
static PR_Result checkIfDeviceIsSuitable(
VkPhysicalDevice device, bool *deviceIsSuitable_p
);
// Does the device support all required extensions?
static PR_Result checkDeviceExtensionSupport(
VkPhysicalDevice device, bool *deviceSupportsExtensions_p
);
......
......@@ -22,6 +22,7 @@
///
//
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstance.html
static PR_Result createInstance(
PR_Thread *Thread_p, PR_VkLink *VkLink_p
);
......@@ -29,8 +30,10 @@ static PR_Result createMessenger(
PR_Thread *Thread_p, PR_VkLink *VkLink_p
);
// Are validation layers supported?
static PR_Result validationLayerSupported(
);
// Are validation extensions supported?
static PR_Result validationExtensionSupported(
);
......
......@@ -24,12 +24,15 @@
///
//
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSwapchainKHR.html
static PR_Result createSwapchain(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p, PR_VkWindowLink *VkWindowLink_p, uint32_t graphicsQueueFamily
);
// Create depth/stencil resources.
static PR_Result createDepthStencil(
PR_Thread *Thread_p, PR_VkDeviceLink *VkDeviceLink_p, PR_VkWindowLink *VkWindowLink_p, VkImageView *depthStencilViewOffset_p
);
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSurfaceKHR.html
static PR_Result createSurface(
PR_Thread *Thread_p, PR_Window *Window_p, PR_VkDeviceLink *VkDeviceLink_p, PR_VkWindowLink *VkWindowLink_p,
uint32_t qraphicsQueueFamily
......
......@@ -11,6 +11,9 @@
/**
* Create a BVH based on the render-task.
*
* @param *Thread_p The related thread.
* @param *RenderTask_p The related render task.
*/
PR_Result PR_createBVH(
PR_Thread *Thread_p, PR_RenderTask *RenderTask_p
......
......@@ -4,6 +4,7 @@
///
//
// Get sphere-structure using sphere offset of rendertask
#define SPHERE(i) ((PR_Sphere*)Thread_p->Data.handle_pp[HANDLE_TYPE_SPHERE])[i + RenderTask_p->firstSphereIndex]
//////
......
......@@ -11,6 +11,11 @@
/**
* Create a grid based on the render-task.
*
* @param *Thread_p The related thread.
* @param *RenderTask_p The related render task.
* @param *Window_p Related window.
* @param *Device_p Related device.
*/
PR_Result PR_createGrid(
PR_Thread *Thread_p, PR_RenderTask *RenderTask_p, PR_Device *Device_p, PR_Window *Window_p
......
......@@ -9,6 +9,9 @@
/**
* Create a render-task. This is a essential function.
*
* @param *Thread_p Thread representation.
* @param *Id_p The resulting PR_RenderTask index.
*/
PR_Result PR_createRenderTask(
PR_Thread *Thread_p, PR_Id *Id_p
......
......@@ -18,6 +18,8 @@ typedef struct PR_HandleFileDropArgs {
/**
* Handle a file drop.
*
* @param *HandleFilesDropArgs_p Struct of type PR_HandleFileDropArgs.
*/
void PR_handleFileDrop(
void *HandleFileDropArgs_p
......
......@@ -9,6 +9,12 @@
/**
* Load sphere data.
*
* @param *Instance_p The instance.
* @param *Thread_p Thread representation.
* @param *path File path.
* @param *begin_p The resulting first sphere index.
* @param *end_p The resulting last sphere index.