port from perforce
This commit is contained in:
225
hgplus/sdfparticles/data.h
Normal file
225
hgplus/sdfparticles/data.h
Normal file
@@ -0,0 +1,225 @@
|
||||
#define VC_EXTRALEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <Windows.h>
|
||||
#include <cstdlib>
|
||||
|
||||
#define D3D11_NO_HELPERS
|
||||
#include <d3d11.h>
|
||||
#include <dxgi.h>
|
||||
#include <d3dcompiler.h>
|
||||
|
||||
#define PARTICLE_COUNT 512
|
||||
#define PARTICLE_STRIDE 56
|
||||
#define ATOM_EDIT 0xC018
|
||||
#define ATOM_STATIC 0xC019
|
||||
#define WIDTH 1280
|
||||
#define HEIGHT 720
|
||||
#define _FULLSCREEN
|
||||
|
||||
typedef struct {
|
||||
// DXGI_MODE_DESC BufferDesc;
|
||||
UINT Width;
|
||||
UINT Height;
|
||||
//DXGI_RATIONAL RefreshRate;
|
||||
UINT Numerator;
|
||||
UINT Denominator;
|
||||
DXGI_FORMAT Format;
|
||||
DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
|
||||
DXGI_MODE_SCALING Scaling;
|
||||
|
||||
// DXGI_SAMPLE_DESC SampleDesc;
|
||||
UINT Count;
|
||||
UINT Quality;
|
||||
|
||||
DXGI_USAGE BufferUsage;
|
||||
UINT BufferCount;
|
||||
HWND OutputWindow;
|
||||
BOOL Windowed;
|
||||
DXGI_SWAP_EFFECT SwapEffect;
|
||||
UINT Flags;
|
||||
} HG_DXGI_SWAP_CHAIN_DESC;
|
||||
|
||||
struct ConstantBufferType
|
||||
{
|
||||
float demoTime;
|
||||
float deltaTime;
|
||||
float dummy1;
|
||||
float dummy2;
|
||||
};
|
||||
|
||||
#pragma bss_seg(".bss")
|
||||
static HWND hWnd;
|
||||
static ID3D11Device* device;
|
||||
static ID3D11DeviceContext* context;
|
||||
static IDXGISwapChain* swapChain;
|
||||
static ID3D11Texture2D* backBufferTexture;
|
||||
static ID3D11RenderTargetView* renderTargetView;
|
||||
static ID3D11UnorderedAccessView* particleBufferUAV;
|
||||
static ID3D11ShaderResourceView* particleBufferSRV;
|
||||
static ID3D11Buffer* particleBuffer;
|
||||
static ID3D11Buffer* constantBuffer;
|
||||
static ID3D11ComputeShader* initShader;
|
||||
static ID3D11ComputeShader* updateShader;
|
||||
static ID3D11ComputeShader* drawShader;
|
||||
static ID3D11VertexShader* particleVertexShader;
|
||||
static ID3D11GeometryShader* particleGeometryShader;
|
||||
static ID3D11PixelShader* particlePixelShader;
|
||||
static ID3D11InputLayout* particleInputLayout;
|
||||
static ID3D11RenderTargetView* backBufferRtv;
|
||||
static ID3D11BlendState* alphaBlendState;
|
||||
static ID3D11RasterizerState* rasterizerState;
|
||||
static ID3D11VertexShader* raymarchingVertexShader;
|
||||
static ID3D11PixelShader* raymarchingPixelShader;
|
||||
|
||||
//---
|
||||
// Postprocessing shaders
|
||||
//---
|
||||
static ID3D11UnorderedAccessView* backBufferUAV;
|
||||
static ID3D11ComputeShader* csDistortChroma;
|
||||
static ID3D11ComputeShader* csRadialBlur;
|
||||
static ID3D11ComputeShader* csCircumferentialBlur;
|
||||
static ID3D11ComputeShader* csStreaks;
|
||||
static ID3D11ComputeShader* csLensDirt;
|
||||
static ID3D11ComputeShader* csBlurH;
|
||||
static ID3D11ComputeShader* csBlurV;
|
||||
static ID3D11ComputeShader* csGhosts;
|
||||
static ID3D11ComputeShader* csMerge;
|
||||
|
||||
|
||||
static pD3DCompile d3dCompile;
|
||||
static ID3DBlob* shaderBlob;
|
||||
static void* shaderCode;
|
||||
static SIZE_T shaderSize;
|
||||
static D3D11_MAPPED_SUBRESOURCE mappedResource;
|
||||
static float zero[4];
|
||||
|
||||
#pragma data_seg(".d3dcompiler")
|
||||
static char* d3dcompiler = "d3dcompiler_47.dll";
|
||||
|
||||
#pragma data_seg(".swapChainDesc")
|
||||
#ifdef FULLSCREEN
|
||||
HG_DXGI_SWAP_CHAIN_DESC swapChainDesc = {
|
||||
WIDTH, HEIGHT, 0, 1, DXGI_FORMAT_R16G16B16A16_FLOAT,
|
||||
DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED, DXGI_MODE_SCALING_UNSPECIFIED,
|
||||
1, 0, DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_UNORDERED_ACCESS | DXGI_USAGE_SHADER_INPUT, 1, 0, 0, DXGI_SWAP_EFFECT_DISCARD, 0
|
||||
};
|
||||
#else
|
||||
HG_DXGI_SWAP_CHAIN_DESC swapChainDesc = {
|
||||
WIDTH, HEIGHT, 0, 1, DXGI_FORMAT_R16G16B16A16_FLOAT,
|
||||
DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED, DXGI_MODE_SCALING_UNSPECIFIED,
|
||||
1, 0, DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_UNORDERED_ACCESS | DXGI_USAGE_SHADER_INPUT, 1, 0, -1, DXGI_SWAP_EFFECT_DISCARD, 0
|
||||
};
|
||||
#endif
|
||||
|
||||
#pragma data_seg(".depthBufferDesc")
|
||||
static D3D11_TEXTURE2D_DESC depthBufferDesc =
|
||||
{
|
||||
WIDTH,
|
||||
HEIGHT,
|
||||
1,
|
||||
1,
|
||||
DXGI_FORMAT_D32_FLOAT,
|
||||
{
|
||||
1, 0
|
||||
},
|
||||
D3D11_USAGE_DEFAULT,
|
||||
D3D11_BIND_DEPTH_STENCIL,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
#pragma data_seg(".rasterizerDesc")
|
||||
static D3D11_RASTERIZER_DESC rasterizerDesc =
|
||||
{
|
||||
D3D11_FILL_SOLID,
|
||||
D3D11_CULL_NONE,
|
||||
TRUE,
|
||||
0,
|
||||
0.0f,
|
||||
0.0f,
|
||||
TRUE,
|
||||
FALSE,
|
||||
FALSE,
|
||||
FALSE
|
||||
};
|
||||
|
||||
#pragma data_seg(".constantBufferDesc")
|
||||
static D3D11_BUFFER_DESC constantBufferDesc =
|
||||
{
|
||||
16,
|
||||
D3D11_USAGE_DYNAMIC,
|
||||
D3D11_BIND_CONSTANT_BUFFER,
|
||||
D3D11_CPU_ACCESS_WRITE,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
#pragma data_seg(".particleBufferDesc")
|
||||
static D3D11_BUFFER_DESC particleBufferDesc =
|
||||
{
|
||||
PARTICLE_COUNT * PARTICLE_COUNT * PARTICLE_STRIDE,
|
||||
D3D11_USAGE_DEFAULT,
|
||||
D3D11_BIND_UNORDERED_ACCESS | D3D11_BIND_SHADER_RESOURCE,
|
||||
0,
|
||||
D3D11_RESOURCE_MISC_BUFFER_STRUCTURED,
|
||||
PARTICLE_STRIDE
|
||||
};
|
||||
|
||||
#pragma data_seg(".particleBufferDesc")
|
||||
static D3D11_SHADER_RESOURCE_VIEW_DESC particleSrvDesc =
|
||||
{
|
||||
DXGI_FORMAT_UNKNOWN,
|
||||
D3D11_SRV_DIMENSION_BUFFER,
|
||||
{
|
||||
0,
|
||||
PARTICLE_COUNT * PARTICLE_COUNT
|
||||
}
|
||||
};
|
||||
|
||||
#pragma data_seg(".particleUavDesc")
|
||||
static D3D11_UNORDERED_ACCESS_VIEW_DESC particleUavDesc =
|
||||
{
|
||||
DXGI_FORMAT_UNKNOWN,
|
||||
D3D11_UAV_DIMENSION_BUFFER,
|
||||
0,
|
||||
PARTICLE_COUNT * PARTICLE_COUNT,
|
||||
0
|
||||
};
|
||||
|
||||
#pragma data_seg(".backBufferRtvDesc")
|
||||
static D3D11_RENDER_TARGET_VIEW_DESC backBufferRtvDesc =
|
||||
{
|
||||
DXGI_FORMAT_R16G16B16A16_FLOAT,
|
||||
D3D11_RTV_DIMENSION_TEXTURE2DMS,
|
||||
{
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
#pragma data_seg(".swapChainViewport")
|
||||
static D3D11_VIEWPORT swapChainViewport =
|
||||
{
|
||||
0,
|
||||
0,
|
||||
WIDTH,
|
||||
HEIGHT,
|
||||
0.0f,
|
||||
1.0f,
|
||||
};
|
||||
|
||||
#pragma data_seg(".alphaBlendDesc")
|
||||
static D3D11_BLEND_DESC alphaBlendDesc =
|
||||
{
|
||||
FALSE,
|
||||
FALSE,
|
||||
{
|
||||
TRUE,
|
||||
D3D11_BLEND_SRC_ALPHA,
|
||||
D3D11_BLEND_INV_SRC_ALPHA,
|
||||
D3D11_BLEND_OP_ADD,
|
||||
D3D11_BLEND_ONE,
|
||||
D3D11_BLEND_ONE,
|
||||
D3D11_BLEND_OP_ADD,
|
||||
D3D11_COLOR_WRITE_ENABLE_ALL,
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user