Files
bluflame/hgplus/bliss/Engine/data.h
2026-04-18 22:31:51 +02:00

1040 lines
20 KiB
C

#include <Windows.h>
#include <d3d11.h>
#include <D3Dcompiler.h>
#include <mmsystem.h>
#include <mmreg.h>
#include "4klang.h"
#include "Shader.h"
//#define FULLSCREEN
#define MSAA
#ifdef MSAA
#define MSAA_SAMPLECOUNT 4
#define MSAA_DSV D3D11_DSV_DIMENSION_TEXTURE2DMS
#define MSAA_SRV D3D11_SRV_DIMENSION_TEXTURE2DMS
#define MSAA_RTV D3D11_RTV_DIMENSION_TEXTURE2DMS
#else
#define MSAA_SAMPLECOUNT 1
#define MSAA_DSV D3D11_DSV_DIMENSION_TEXTURE2D
#define MSAA_SRV D3D11_SRV_DIMENSION_TEXTURE2D
#define MSAA_RTV D3D11_RTV_DIMENSION_TEXTURE2D
#endif
#ifdef FULLSCREEN
#define WINDOWED FALSE
#define screenWidth 1024
#define screenHeight 768
#else
#define WINDOWED TRUE
#define screenWidth 1280
#define screenHeight 720
#endif
#define terrainTextureSize 4096
#define shadowMapSize 4096
#define floraTextureSize 512
#define PATCH_COUNT 512
#define CELL_COUNT (PATCH_COUNT * PATCH_COUNT)
#define TERRAIN_TRIANGLE_COUNT (CELL_COUNT * 64)
#define PLANT_COUNT 3000
#define LEAF_COUNT (PLANT_COUNT * 14)
#define FLOWER_COUNT (PLANT_COUNT * 8 * 4)
#define PLANT_QUAD_COUNT (4 * LEAF_COUNT)
#define FLOWER_QUAD_COUNT (4 * FLOWER_COUNT)
#define VERTEX_COUNT (4 * CELL_COUNT)
struct VertexType
{
float px, py, pz, u, v;
};
struct PlantInstanceType
{
float tx, ty, tz, tw, rx, ry, rz, rw, sx, sy, sz, sw, s, t, u, v;
};
struct ConstantBuffer1Type
{
float time;
int shader;
int screenY;
float aspect;
};
struct ConstantBuffer2Type
{
float directionX;
float directionY;
float directionZ;
float directionW;
float cameraX;
float cameraY;
float cameraZ;
float cameraW;
float view11;
float view12;
float view13;
float view14;
float view21;
float view22;
float view23;
float view24;
float view31;
float view32;
float view33;
float view34;
float view41;
float view42;
float view43;
float view44;
float projection11;
float projection12;
float projection13;
float projection14;
float projection21;
float projection22;
float projection23;
float projection24;
float projection31;
float projection32;
float projection33;
float projection34;
float projection41;
float projection42;
float projection43;
float projection44;
float lightvp11;
float lightvp12;
float lightvp13;
float lightvp14;
float lightvp21;
float lightvp22;
float lightvp23;
float lightvp24;
float lightvp31;
float lightvp32;
float lightvp33;
float lightvp34;
float lightvp41;
float lightvp42;
float lightvp43;
float lightvp44;
float fog1;
float fog2;
float fog3;
float fog4;
float lift1;
float lift2;
float lift3;
float lift4;
float gamma1;
float gamma2;
float gamma3;
float gamma4;
float gain1;
float gain2;
float gain3;
float gain4;
float lightDir1;
float lightDir2;
float lightDir3;
float lightDir4;
};
#pragma data_seg(".strides")
static UINT strides[] =
{
sizeof(VertexType),
sizeof(PlantInstanceType),
sizeof(ConstantBuffer1Type),
sizeof(ConstantBuffer2Type)
};
#pragma data_seg(".plantStrides")
static UINT plantStrides[] =
{
sizeof(PlantInstanceType), sizeof(PlantInstanceType)
};
#pragma data_seg(".vertexStrides")
static UINT vertexStrides[] =
{
sizeof(VertexType), sizeof(VertexType)
};
#pragma data_seg("d3dcompiler")
static char d3dcompiler[] = "d3dcompiler_47.dll";
#pragma bss_seg(".bss")
static pD3DCompile d3dCompile;
static float time;
static HWND hwnd;
static IDXGISwapChain* swapChain;
static ID3D11Device* device;
static ID3D11DeviceContext* deviceContext;
static ID3D11Texture2D* swapChainDepthStencilBuffer;
static ID3D11Texture2D* shadowDepthStencilBuffer;
static ID3D11Texture2D* backBufferPtr;
static ID3D11Texture2D* terrainRenderTexture;
static ID3D11Texture2D* terrainDiffuseRenderTexture;
static ID3D11Texture2D* backBufferTexture;
static ID3D11Texture2D* floraRenderTexture;
static ID3D11Texture2D* depthRenderTexture;
static ID3D11RenderTargetView* swapChainRenderTargetView;
static ID3D11RenderTargetView* terrainDiffuseRenderTargetView;
static ID3D11RenderTargetView* backBufferRenderTargetView;
static ID3D11RenderTargetView* heightMapRenderTargetView;
static ID3D11RenderTargetView* terrainWaterRenderTargetView;
static ID3D11RenderTargetView* floraTextureRenderTargetView;
static ID3D11RenderTargetView* depthTextureRenderTargetView;
static ID3D11DepthStencilState* depthStencilState;
static ID3D11DepthStencilState* noDepthStencilState;
static ID3D11DepthStencilView* swapChainDepthStencilView;
static ID3D11DepthStencilView* shadowDepthStencilView;
static ID3D11RasterizerState* solidRasterState;
static ID3D11RasterizerState* solidNoCullingRasterState;
static ID3D11RasterizerState* solidFrontCullingRasterState;
static ID3D11RasterizerState* wiredRasterState;
static ID3DBlob* shaderBlob;
static ID3DBlob* errorBlob;
static ID3D11VertexShader* instancedVertexShader;
static ID3D11VertexShader* terrainVertexShader;
static ID3D11VertexShader* constantBufferVertexShader;
static ID3D11VertexShader* cellBufferVertexShader;
static ID3D11VertexShader* vertexBufferVertexShader;
static ID3D11HullShader* hullShader;
static ID3D11HullShader* hullShaderPlant;
static ID3D11DomainShader* terrainDomainShader;
static ID3D11PixelShader* terrainPixelShader;
static ID3D11VertexShader* textureVertexShader;
static ID3D11VertexShader* plantVertexShader;
static ID3D11VertexShader* instanceVertexShader;
static ID3D11VertexShader* terrainProjectVertexShader;
static ID3D11DomainShader* plantDomainNormalShader;
static ID3D11DomainShader* plantDomainShadowShader;
static ID3D11DomainShader* flowerDomainNormalShader;
static ID3D11DomainShader* flowerDomainShadowShader;
static ID3D11PixelShader* heightMapPixelShader;
static ID3D11PixelShader* plantTexturePixelShader;
static ID3D11PixelShader* plantPixelNormalShader;
static ID3D11PixelShader* flowerPixelNormalShader;
static ID3D11PixelShader* plantPixelShadowShader;
static ID3D11PixelShader* postProcessPixelShader;
static ID3D11PixelShader* terrainTexturePixelShader;
static ID3D11GeometryShader* constantBufferGeometryShader;
static ID3D11GeometryShader* plantInstanceGeometryShader;
static ID3D11GeometryShader* multiplyGeometryShader;
static ID3D11GeometryShader* rotationGeometryShader;
static ID3D11GeometryShader* quadGeometryShader;
static ID3D11GeometryShader* terrainGeometryShader;
static ID3D11GeometryShader* cellBufferGeometryShader;
static ID3D11GeometryShader* vertexBufferGeometryShader;
static ID3D11PixelShader* cloudPixelShader;
static ID3D11Buffer* constantBufferTemp;
static ID3D11Buffer* cellBuffer;
static ID3D11Buffer* vertexBuffer;
static ID3D11Buffer* plantInstanceBuffer;
static ID3D11Buffer* multipliedPlantInstanceBuffer;
static ID3D11Buffer* multipliedFlowerInstanceBuffer;
static ID3D11InputLayout* layout;
static ID3D11InputLayout* instancedLayout;
static D3D11_MAPPED_SUBRESOURCE mappedResource;
static ID3D11ShaderResourceView* terrainWaterShaderResourceView;
static ID3D11ShaderResourceView* depthStencilShaderResourceView;
static ID3D11BlendState* alphaEnableBlendingState;
static void* shaderCode;
static size_t shaderSize;
static ID3D11SamplerState* samplerStates[3];// = { samplerState, compSamplerState, clampSamplerState };
static ID3D11Buffer* constantBuffers[2];// = { constantBuffer1, constantBuffer2, tweakBuffer };
static ID3D11Buffer* soBuffers[2];// = { rotatedPlantInstanceBuffer, flowerInstanceBuffer };
static ID3D11ShaderResourceView* plantResources[2];// = { terrainShaderResourceView, floraShaderResourceView };
static ID3D11ShaderResourceView* postProcessResources[4];// = { 0, 0, 0, backBufferShaderResourceView1 };
static ID3D11Buffer* terrainBuffers[2];// = { underwaterVertexBuffer, landVertexBuffer };
static ID3D11ShaderResourceView* terrainViews[3];// = { plantResources[0], terrainDiffuseShaderResourceView, depthShaderResourceView }; // !!!
#pragma data_seg(".mmtime")
static MMTIME mmtime =
{
TIME_SAMPLES
};
#pragma data_seg(".aspectRatio")
static float aspectRatio = float(screenWidth) / screenHeight;
#pragma bss_seg(".audio_bss")
static SAMPLE_TYPE soundBuffer[MAX_SAMPLES * 2];
static HWAVEOUT hWaveOut;
#pragma data_seg(".wavehdr")
WAVEHDR WaveHDR =
{
(LPSTR)soundBuffer,
MAX_SAMPLES*sizeof(SAMPLE_TYPE)* 2,
0, 0, WHDR_PREPARED, 0, 0, 0
};
#pragma data_seg(".wavefmt")
WAVEFORMATEX WaveFMT =
{
#ifdef FLOAT_32BIT
WAVE_FORMAT_IEEE_FLOAT,
#else
WAVE_FORMAT_PCM,
#endif
2, // channels
SAMPLE_RATE, // samples per sec
SAMPLE_RATE*sizeof(SAMPLE_TYPE)* 2, // bytes per sec
sizeof(SAMPLE_TYPE)* 2, // block alignment;
sizeof(SAMPLE_TYPE)* 8, // bits per sample
0 // extension not needed
};
static D3D11_BLEND_DESC blendStateDescription =
{
0,
FALSE,
{
{
TRUE,
D3D11_BLEND_SRC_ALPHA,//D3D11_BLEND_ONE,
D3D11_BLEND_INV_SRC_ALPHA,
D3D11_BLEND_OP_ADD,
D3D11_BLEND_ONE,
D3D11_BLEND_ZERO,
D3D11_BLEND_OP_ADD,
0x0F
}
}
};
#pragma data_seg(".polygonLayout")
static D3D11_INPUT_ELEMENT_DESC polygonLayout[] =
{
{
"POSITION",
0,
DXGI_FORMAT_R32G32B32_FLOAT,
0,
0,
D3D11_INPUT_PER_VERTEX_DATA,
0
},
{
"TEXCOORD",
0,
DXGI_FORMAT_R32G32_FLOAT,
0,
D3D11_APPEND_ALIGNED_ELEMENT,
D3D11_INPUT_PER_VERTEX_DATA,
0
}
};
#pragma data_seg(".instancedLayoutDesc")
static D3D11_INPUT_ELEMENT_DESC instancedLayoutDesc[] =
{
{
"TRANSLATION",
0,
DXGI_FORMAT_R32G32B32A32_FLOAT,
0,
0,
D3D11_INPUT_PER_VERTEX_DATA,
0
},
{
"ROTATION",
0,
DXGI_FORMAT_R32G32B32A32_FLOAT,
0,
D3D11_APPEND_ALIGNED_ELEMENT,
D3D11_INPUT_PER_VERTEX_DATA,
0
},
{
"SCALE",
0,
DXGI_FORMAT_R32G32B32A32_FLOAT,
0,
D3D11_APPEND_ALIGNED_ELEMENT,
D3D11_INPUT_PER_VERTEX_DATA,
0
},
{
"TEXCOORD",
0,
DXGI_FORMAT_R32G32B32A32_FLOAT,
0,
D3D11_APPEND_ALIGNED_ELEMENT,
D3D11_INPUT_PER_VERTEX_DATA,
0
}
};
#pragma data_seg(".constantBuffer1Desc")
static D3D11_BUFFER_DESC constantBuffer1Desc =
{
sizeof(ConstantBuffer1Type),
D3D11_USAGE_DYNAMIC,
D3D11_BIND_CONSTANT_BUFFER,
D3D11_CPU_ACCESS_WRITE,
0,
0
};
#pragma data_seg(".constantBuffer2Desc")
static D3D11_BUFFER_DESC constantBuffer2Desc =
{
sizeof(ConstantBuffer2Type),
D3D11_USAGE_DEFAULT,
D3D11_BIND_CONSTANT_BUFFER,
0,
0,
0
};
#pragma data_seg(".constantBufferTempDesc")
static D3D11_BUFFER_DESC constantBufferTempDesc =
{
sizeof(ConstantBuffer2Type),
D3D11_USAGE_DEFAULT,
D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
};
#pragma data_seg(".vertexBufferDesc")
static D3D11_BUFFER_DESC vertexBufferDesc =
{
sizeof(VertexType) * VERTEX_COUNT,
D3D11_USAGE_DEFAULT,
D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
};
#pragma data_seg(".cellBufferDesc")
static D3D11_BUFFER_DESC cellBufferDesc =
{
sizeof(VertexType)* CELL_COUNT,
D3D11_USAGE_DEFAULT,
D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
};
#pragma data_seg(".instanceBufferDescs")
static D3D11_BUFFER_DESC instanceBufferDescs[] =
{
{
sizeof(PlantInstanceType)* CELL_COUNT,
D3D11_USAGE_DEFAULT,
D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
},
{
sizeof(PlantInstanceType)* LEAF_COUNT,
D3D11_USAGE_DEFAULT,
D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
},
{
sizeof(PlantInstanceType)* FLOWER_COUNT,
D3D11_USAGE_DEFAULT,
D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
},
{
sizeof(PlantInstanceType)* PLANT_QUAD_COUNT,
D3D11_USAGE_DEFAULT,
D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
},
{
sizeof(PlantInstanceType)* FLOWER_QUAD_COUNT,
D3D11_USAGE_DEFAULT,
D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
},
{
sizeof(VertexType)* 1500000,
D3D11_USAGE_DEFAULT,
D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT,
0,
0,
0
}
};
#pragma data_seg(".cellBufferSODeclarations")
static D3D11_SO_DECLARATION_ENTRY cellBufferSODeclarations[] =
{
{ 0, "POSITION", 0, 0, 3, 0 },
{ 0, "TEXCOORD", 0, 0, 2, 0 },
};
#pragma data_seg(".constantBufferSODeclarations")
static D3D11_SO_DECLARATION_ENTRY constantBufferSODeclarations[] =
{
{ 0, "_dS", 0, 0, 4, 0 },
{ 0, "_cS", 0, 0, 4, 0 },
{ 0, "_vS", 0, 0, 4, 0 },
{ 0, "_vS", 1, 0, 4, 0 },
{ 0, "_vS", 2, 0, 4, 0 },
{ 0, "_vS", 3, 0, 4, 0 },
{ 0, "_pS", 0, 0, 4, 0 },
{ 0, "_pS", 1, 0, 4, 0 },
{ 0, "_pS", 2, 0, 4, 0 },
{ 0, "_pS", 3, 0, 4, 0 },
{ 0, "_lvpS", 0, 0, 4, 0 },
{ 0, "_lvpS", 1, 0, 4, 0 },
{ 0, "_lvpS", 2, 0, 4, 0 },
{ 0, "_lvpS", 3, 0, 4, 0 },
{ 0, "_fS", 0, 0, 4, 0 },
{ 0, "_lS", 0, 0, 4, 0 },
{ 0, "_gS", 0, 0, 4, 0 },
{ 0, "_nS", 0, 0, 4, 0 },
{ 0, "lS", 0, 0, 4, 0 },
};
#pragma data_seg(".plantSODeclarations")
static D3D11_SO_DECLARATION_ENTRY plantSODeclarations[] =
{
{
0,
"TRANSLATION",
0,
0,
4,
0
},
{
0,
"ROTATION",
0,
0,
4,
0
},
{
0,
"SCALE",
0,
0,
4,
0
},
{
0,
"TEXCOORD",
0,
0,
4,
0
},
{
1,
"TRANSLATION",
0,
0,
4,
1
},
{
1,
"ROTATION",
0,
0,
4,
1
},
{
1,
"SCALE",
0,
0,
4,
1
},
{
1,
"TEXCOORD",
0,
0,
4,
1
}
};
#pragma data_seg(".terrainSODeclarations")
static D3D11_SO_DECLARATION_ENTRY terrainSODeclarations[] =
{
{
0,
"POSITION",
0,
0,
3,
0
},
{
0,
"TEXCOORD",
0,
0,
2,
0
},
{
1,
"POSITION",
0,
0,
3,
1
},
{
1,
"TEXCOORD",
0,
0,
2,
1
}
};
#pragma data_seg(".swapChainDesc")
static DXGI_SWAP_CHAIN_DESC swapChainDesc =
{
{
screenWidth,
screenHeight,
{
0, 0
},
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED,
DXGI_MODE_SCALING_UNSPECIFIED
},
{
MSAA_SAMPLECOUNT, 0
},
DXGI_USAGE_RENDER_TARGET_OUTPUT,
1,
0,
WINDOWED,
DXGI_SWAP_EFFECT_DISCARD,
0
};
#pragma data_seg(".samplerDesc")
static D3D11_SAMPLER_DESC samplerDesc =
{
D3D11_FILTER_ANISOTROPIC,
D3D11_TEXTURE_ADDRESS_WRAP,
D3D11_TEXTURE_ADDRESS_WRAP,
D3D11_TEXTURE_ADDRESS_WRAP,
0.0f,
1,
D3D11_COMPARISON_ALWAYS,
{
0, 0, 0, 0
},
0,
D3D11_FLOAT32_MAX
};
#pragma data_seg(".clampSamplerDesc")
static D3D11_SAMPLER_DESC clampSamplerDesc =
{
D3D11_FILTER_ANISOTROPIC,
D3D11_TEXTURE_ADDRESS_CLAMP,
D3D11_TEXTURE_ADDRESS_CLAMP,
D3D11_TEXTURE_ADDRESS_CLAMP,
0.0f,
1,
D3D11_COMPARISON_ALWAYS,
{
0, 0, 0, 0
},
0,
D3D11_FLOAT32_MAX
};
#pragma bss_seg(".zero")
static float zero[4] = { 0, 0, 0, 0 };
#pragma data_seg(".compSamplerDesc")
static D3D11_SAMPLER_DESC compSamplerDesc =
{
D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR,
D3D11_TEXTURE_ADDRESS_CLAMP,
D3D11_TEXTURE_ADDRESS_CLAMP,
D3D11_TEXTURE_ADDRESS_CLAMP,
0.0f,
1,
D3D11_COMPARISON_LESS_EQUAL,
{
0, 0, 0, 0
},
0,
D3D11_FLOAT32_MAX
};
#pragma data_seg(".featureLevel")
static D3D_FEATURE_LEVEL featureLevel[] = { D3D_FEATURE_LEVEL_11_0 };
#pragma data_seg(".depthBufferDesc")
static D3D11_TEXTURE2D_DESC depthBufferDesc =
{
screenWidth,
screenHeight,
1,
1,
DXGI_FORMAT_R24G8_TYPELESS,
{
MSAA_SAMPLECOUNT, 0
},
D3D11_USAGE_DEFAULT,
D3D11_BIND_DEPTH_STENCIL | D3D11_BIND_SHADER_RESOURCE,
0,
0
};
#pragma data_seg(".shadowDepthBufferDesc")
static D3D11_TEXTURE2D_DESC shadowDepthBufferDesc =
{
shadowMapSize,
shadowMapSize,
1,
1,
DXGI_FORMAT_D24_UNORM_S8_UINT,
{
1, 0
},
D3D11_USAGE_DEFAULT,
D3D11_BIND_DEPTH_STENCIL,
0,
0
};
#pragma data_seg(".terrainRenderTextureDesc")
static D3D11_TEXTURE2D_DESC terrainRenderTextureDesc =
{
terrainTextureSize,
terrainTextureSize,
1,
1,
DXGI_FORMAT_R16G16B16A16_FLOAT,
{
1, 0
},
D3D11_USAGE_DEFAULT,
D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE,
0,
D3D11_RESOURCE_MISC_GENERATE_MIPS
};
#pragma data_seg(".backBuffer1Desc")
static D3D11_TEXTURE2D_DESC backBuffer1Desc =
{
screenWidth,
screenHeight,
1,
1,
DXGI_FORMAT_R8G8B8A8_UNORM,
{
MSAA_SAMPLECOUNT, 0
},
D3D11_USAGE_DEFAULT,
D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE,
0,
0
};
#pragma data_seg(".backBuffer2Desc")
static D3D11_TEXTURE2D_DESC backBuffer2Desc =
{
screenWidth,
screenHeight,
1,
1,
DXGI_FORMAT_R32G32B32A32_FLOAT,
{
MSAA_SAMPLECOUNT, 0
},
D3D11_USAGE_DEFAULT,
D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE,
0,
0
};
#pragma data_seg(".floraRenderTextureDesc")
static D3D11_TEXTURE2D_DESC floraRenderTextureDesc =
{
floraTextureSize,
floraTextureSize,
1,
1,
DXGI_FORMAT_R16G16B16A16_FLOAT,
{
1, 0
},
D3D11_USAGE_DEFAULT,
D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE,
0,
D3D11_RESOURCE_MISC_GENERATE_MIPS
};
#pragma data_seg(".depthRenderTextureDesc")
static D3D11_TEXTURE2D_DESC depthRenderTextureDesc =
{
shadowMapSize,
shadowMapSize,
1,
1,
DXGI_FORMAT_R32_FLOAT,
{
1, 0
},
D3D11_USAGE_DEFAULT,
D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE,
0,
0
};
#pragma data_seg(".backBufferRenderTargetViewDesc")
static D3D11_RENDER_TARGET_VIEW_DESC backBufferRenderTargetViewDesc =
{
DXGI_FORMAT_R8G8B8A8_UNORM,
MSAA_RTV,
{
0
}
};
#pragma data_seg(".renderTargetViewDesc")
static D3D11_RENDER_TARGET_VIEW_DESC renderTargetViewDesc =
{
DXGI_FORMAT_R16G16B16A16_FLOAT,
D3D11_RTV_DIMENSION_TEXTURE2D,
{
0
}
};
#pragma data_seg(".depthRenderTargetViewDesc")
static D3D11_RENDER_TARGET_VIEW_DESC depthRenderTargetViewDesc =
{
DXGI_FORMAT_R32_FLOAT,
D3D11_RTV_DIMENSION_TEXTURE2D,
{
0
}
};
#pragma data_seg(".backBufferShaderResourceViewDesc")
static D3D11_SHADER_RESOURCE_VIEW_DESC backBufferShaderResourceViewDesc =
{
DXGI_FORMAT_R8G8B8A8_UNORM,
MSAA_SRV,
{
0, 1
}
};
#pragma data_seg(".shaderResourceViewDesc")
static D3D11_SHADER_RESOURCE_VIEW_DESC shaderResourceViewDesc =
{
DXGI_FORMAT_R16G16B16A16_FLOAT,
D3D11_SRV_DIMENSION_TEXTURE2D,
{
0, 1
}
};
#pragma data_seg(".depthResourceViewDesc")
static D3D11_SHADER_RESOURCE_VIEW_DESC depthResourceViewDesc =
{
DXGI_FORMAT_R32_FLOAT,
D3D11_SRV_DIMENSION_TEXTURE2D,
{
0, 1
}
};
#pragma data_seg(".depthStencilResourceViewDesc")
static D3D11_SHADER_RESOURCE_VIEW_DESC depthStencilResourceViewDesc =
{
DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
MSAA_SRV,
{
0, 1
}
};
#pragma data_seg(".depthStencilDesc")
static D3D11_DEPTH_STENCIL_DESC depthStencilDesc =
{
true,
D3D11_DEPTH_WRITE_MASK_ALL,
D3D11_COMPARISON_LESS,
false,
0,
0
};
#pragma data_seg(".noDepthStencilDesc")
static D3D11_DEPTH_STENCIL_DESC noDepthStencilDesc =
{
false,
D3D11_DEPTH_WRITE_MASK_ZERO,
D3D11_COMPARISON_ALWAYS,
false,
0,
0
};
#pragma data_seg(".depthStencilViewDesc")
static D3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc =
{
DXGI_FORMAT_D24_UNORM_S8_UINT,
MSAA_DSV,
0,
{
0
}
};
#pragma data_seg(".rasterDesc")
static D3D11_RASTERIZER_DESC solidRasterDesc =
{
D3D11_FILL_SOLID,
D3D11_CULL_BACK,
FALSE,
0,
0.0f,
0.0f,
TRUE,
FALSE,
TRUE,
TRUE
};
#pragma data_seg(".solidNoCullingRasterDesc")
static D3D11_RASTERIZER_DESC solidNoCullingRasterDesc =
{
D3D11_FILL_SOLID,
D3D11_CULL_NONE,
FALSE,
0,
0.0f,
0.0f,
TRUE,
FALSE,
TRUE,
TRUE
};
#pragma data_seg(".solidFrontCullingRasterDesc")
static D3D11_RASTERIZER_DESC solidFrontCullingRasterDesc =
{
D3D11_FILL_SOLID,
D3D11_CULL_FRONT,
FALSE,
0,
0.0f,
0.0f,
TRUE,
FALSE,
TRUE,
TRUE
};
#ifdef _DEBUG
#pragma data_seg(".rasterDesc")
static D3D11_RASTERIZER_DESC wiredRasterDesc =
{
D3D11_FILL_WIREFRAME,
D3D11_CULL_NONE,
FALSE,
0,
0.0f,
0.0f,
TRUE,
FALSE,
TRUE,
TRUE
};
#endif
#pragma data_seg(".swapChainViewport")
static D3D11_VIEWPORT swapChainViewport =
{
0.0f,
0.0f,
screenWidth,
screenHeight,
0.0f,
1.0f,
};
#pragma data_seg(".terrainTextureViewport")
static D3D11_VIEWPORT terrainTextureViewport =
{
0.0f,
0.0f,
terrainTextureSize,
terrainTextureSize,
0.0f,
1.0f,
};
#pragma data_seg(".floraTextureViewport")
static D3D11_VIEWPORT floraTextureViewport =
{
0.0f,
0.0f,
floraTextureSize,
floraTextureSize,
0.0f,
1.0f,
};
#pragma data_seg(".depthTextureViewport")
static D3D11_VIEWPORT depthTextureViewport =
{
0.0f,
0.0f,
shadowMapSize,
shadowMapSize,
0.0f,
1.0f,
};
#pragma data_seg(".depthClearColor")
static float depthClearColor[] = { 1.0f, 0.0f, 0.0f, 0.0f };
#pragma data_seg(".windowClass")
static char windowClass[] = "static";
#ifndef COMPRESS
#define D3D_DEVICE_FLAGS D3D11_CREATE_DEVICE_DEBUG
#else
#define D3D_DEVICE_FLAGS 0
#endif