Improved particles and trajectory rendering #430
|
@ -8,7 +8,7 @@ const int ROTATION_KERNEL_W = 4;
|
||||||
const int ROTATION_KERNEL_H = 4;
|
const int ROTATION_KERNEL_H = 4;
|
||||||
|
|
||||||
// can perhaps pass in as push constant.
|
// can perhaps pass in as push constant.
|
||||||
const float RADIUS = 0.2f;
|
const float RADIUS = 0.35f;
|
||||||
const float BIAS = 0.0025f;
|
const float BIAS = 0.0025f;
|
||||||
|
|
||||||
layout(local_size_x = 16, local_size_y = 16) in;
|
layout(local_size_x = 16, local_size_y = 16) in;
|
||||||
|
|
Binary file not shown.
|
@ -145,10 +145,10 @@ namespace SHADE
|
||||||
//SHAssetManager::CompileAsset("../../Assets/Shaders/Trajectory_FS.glsl", false);
|
//SHAssetManager::CompileAsset("../../Assets/Shaders/Trajectory_FS.glsl", false);
|
||||||
//SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMapBlur_CS.glsl", false);
|
//SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMapBlur_CS.glsl", false);
|
||||||
//SHAssetManager::CompileAsset("../../Assets/Shaders/Anim_VS.glsl", false);
|
//SHAssetManager::CompileAsset("../../Assets/Shaders/Anim_VS.glsl", false);
|
||||||
SHAssetManager::CompileAsset("../../Assets/Shaders/Particle_VS.glsl", false);
|
//SHAssetManager::CompileAsset("../../Assets/Shaders/Particle_VS.glsl", false);
|
||||||
SHAssetManager::CompileAsset("../../Assets/Shaders/Particle_FS.glsl", false);
|
//SHAssetManager::CompileAsset("../../Assets/Shaders/Particle_FS.glsl", false);
|
||||||
SHAssetManager::CompileAsset("../../Assets/Shaders/ParticleEmit_CS.glsl", false);
|
//SHAssetManager::CompileAsset("../../Assets/Shaders/ParticleEmit_CS.glsl", false);
|
||||||
SHAssetManager::CompileAsset("../../Assets/Shaders/ParticleUpdate_CS.glsl", false);
|
//SHAssetManager::CompileAsset("../../Assets/Shaders/ParticleUpdate_CS.glsl", false);
|
||||||
|
|
||||||
// Load Built In Shaders
|
// Load Built In Shaders
|
||||||
static constexpr AssetID VS_DEFAULT = 39210065; defaultVertShader = SHResourceManager::LoadOrGet<SHVkShaderModule>(VS_DEFAULT);
|
static constexpr AssetID VS_DEFAULT = 39210065; defaultVertShader = SHResourceManager::LoadOrGet<SHVkShaderModule>(VS_DEFAULT);
|
||||||
|
|
|
@ -19,15 +19,16 @@ namespace SHADE
|
||||||
// generate samples
|
// generate samples
|
||||||
for (uint32_t i = 0; i < NUM_SAMPLES; ++i)
|
for (uint32_t i = 0; i < NUM_SAMPLES; ++i)
|
||||||
{
|
{
|
||||||
//SHVec3 temp
|
SHVec3 temp
|
||||||
//{
|
{
|
||||||
// distrib(generator) * 2.0f - 1.0f, // -1.0f - 1.0f
|
distrib(generator) * 2.0f - 1.0f, // -1.0f - 1.0f
|
||||||
// distrib(generator) * 2.0f - 1.0f, // -1.0f - 1.0f
|
distrib(generator) * 2.0f - 1.0f, // -1.0f - 1.0f
|
||||||
// distrib(generator), // 0.0f - 1.0f so that sample space is a hemisphere
|
distrib(generator), // 0.0f - 1.0f so that sample space is a hemisphere
|
||||||
//};
|
};
|
||||||
|
|
||||||
//temp = SHVec3::Normalise(temp);
|
temp = SHVec3::Normalise(temp);
|
||||||
//temp *= distrib(generator);
|
temp *= distrib(generator);
|
||||||
|
samples[i] = SHVec4 (temp.x, temp.y, temp.z, 0.0f);
|
||||||
|
|
||||||
//// This makes sure that most points are closer to fragment's position
|
//// This makes sure that most points are closer to fragment's position
|
||||||
//float scale = 1.0f / static_cast<float>(NUM_SAMPLES);
|
//float scale = 1.0f / static_cast<float>(NUM_SAMPLES);
|
||||||
|
@ -36,16 +37,16 @@ namespace SHADE
|
||||||
//samples[i] = SHVec4 (temp.x, temp.y, temp.z, 0.0f);
|
//samples[i] = SHVec4 (temp.x, temp.y, temp.z, 0.0f);
|
||||||
|
|
||||||
|
|
||||||
samples[i] = SHVec4
|
//samples[i] = SHVec4
|
||||||
{
|
//{
|
||||||
distrib(generator) * 2.0f - 1.0f, // -1.0f - 1.0f
|
// distrib(generator) * 2.0f - 1.0f, // -1.0f - 1.0f
|
||||||
distrib(generator) * 2.0f - 1.0f, // -1.0f - 1.0f
|
// distrib(generator) * 2.0f - 1.0f, // -1.0f - 1.0f
|
||||||
distrib(generator), // 0.0f - 1.0f so that sample space is a hemisphere
|
// distrib(generator), // 0.0f - 1.0f so that sample space is a hemisphere
|
||||||
0.0f
|
// 0.0f
|
||||||
};
|
//};
|
||||||
|
|
||||||
// This makes sure that most points are closer to fragment's position
|
// This makes sure that most points are closer to fragment's position
|
||||||
float scale = 1.0f / static_cast<float>(NUM_SAMPLES);
|
float scale = static_cast<float>(i) / static_cast<float>(NUM_SAMPLES);
|
||||||
scale = std::lerp(0.1f, 1.0f, scale * scale);
|
scale = std::lerp(0.1f, 1.0f, scale * scale);
|
||||||
samples[i] *= scale;
|
samples[i] *= scale;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue