This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Setup: | |
1. Index buffer containing N quads (each 2 triangles), where N is the max amount of spheres. Repeating pattern of {0,1,2,1,3,2} + K*4. | |
2. No vertex buffer. | |
Render N*2 triangles, where N is the number of spheres you have. | |
Vertex shader: | |
1. Sphere index = N/4 (N = SV_VertexId) | |
2. Quad coord: Q = float2(N%2, (N%4)/2) * 2.0 - 1.0 | |
3. Transform sphere center -> pos |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void BFD2(inout ParticleSimulationData Particle, float3 Accel) | |
{ | |
float3 x = Particle.Position; | |
float3 v = Particle.Velocity; | |
float3 x1 = Particle.PositionPrev; | |
float3 v1 = Particle.VelocityPrev; | |
Particle.Position = (4.0/3.0) * x - (1.0/3.0) * x1 + 1.0 * ((8.0/9.0) * v - (2.0/9.0) * v1 + (4.0/9.0) * TimeStep2 * Accel); | |
Particle.PositionPrev = x; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// NOTE: Must bind 8x single mip RWTexture views, because HLSL doesn't have .mips member for RWTexture2D. (SRVs only have .mips member) | |
// NOTE: globallycoherent attribute is needed. Without it writes aren't guaranteed to be seen by other groups | |
globallycoherent RWTexture2D<float> MipTextures[8]; | |
RWTexture2D<uint> Counters[8]; | |
groupshared uint CounterReturnLDS; | |
[numthreads(16, 16, 1)] | |
void GenerateMipPyramid(uint3 Tid : SV_DispatchThreadID, uint3 Group : SV_GroupId, uint Gix : SV_GroupIndex) | |
{ | |
[unroll] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Spherical cap cone analytic solution is a 1d problem, since the cone cap sphere slides along the ray. The intersection point to empty space sphere is always on the ray. | |
S : radius of cone cap sphere at t=1 | |
r(d) : cone cap sphere radius at distance d | |
r(d) = d*S | |
p = distance of current SDF sample | |
SDF(p) = sdf function result at location p | |
x = distance after conservative step |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int i13; | |
i13 = 0; | |
for (;i13<3;) | |
{ | |
int i14; | |
i14 = 0; | |
for (;i14<3;) | |
{ | |
uvec3 v15; | |
v15.x = 0u; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PerfTest results on RX480 | |
NEW: Added constant buffer and structured buffer test cases. | |
Buffer<R8>.Load uniform: 0.367ms | |
Buffer<R8>.Load linear: 0.374ms | |
Buffer<R8>.Load random: 1.431ms | |
Buffer<RG8>.Load uniform: 1.608ms | |
Buffer<RG8>.Load linear: 1.624ms | |
Buffer<RG8>.Load random: 1.608ms | |
Buffer<RGBA8>.Load uniform: 1.430ms |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PerfTest | |
To select adapter, use: PerfTest.exe [ADAPTER_INDEX] | |
Adapters found: | |
0: Radeon (TM) RX 480 Graphics | |
1: Intel(R) HD Graphics 530 | |
2: Microsoft Basic Render Driver | |
Using adapter 0 | |
Running 30 warm-up frames and 30 benchmark frames: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PerfTest | |
To select adapter, use: PerfTest.exe [ADAPTER_INDEX] | |
Adapters found: | |
0: Radeon (TM) RX 480 Graphics | |
1: Intel(R) HD Graphics 530 | |
2: Microsoft Basic Render Driver | |
Using adapter 1 | |
Running 5 warm-up frames and 5 benchmark frames: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
In shader programming, you often run into a problem where you want to iterate an array in memory over all pixels in a compute shader | |
group (tile). Tiled deferred lighting is the most common case. 8x8 tile loops over a light list culled for that tile. | |
Simplified HLSL code looks like this: | |
Buffer<float4> lightDatas; | |
Texture2D<uint2> lightStartCounts; | |
RWTexture2D<float4> output; | |
[numthreads(8, 8, 1)] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#version 450 | |
#extension GL_ARB_separate_shader_objects : enable | |
#extension GL_KHR_shader_subgroup_basic : enable | |
#extension GL_KHR_shader_subgroup_ballot : enable | |
#extension GL_KHR_shader_subgroup_vote : enable | |
#extension GL_KHR_shader_subgroup_arithmetic : enable | |
layout(location = 0) out vec4 outColor; | |
//#define VISUALIZE_WAVES |
OlderNewer