Implemented masked clearing in Renderer11.

TRAC #22343 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods Author: Geoff Lang git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1759 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 81c5ef9b
...@@ -321,6 +321,8 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -321,6 +321,8 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<ClInclude Include="renderer\ShaderExecutable.h" /> <ClInclude Include="renderer\ShaderExecutable.h" />
<ClInclude Include="renderer\ShaderExecutable11.h" /> <ClInclude Include="renderer\ShaderExecutable11.h" />
<ClInclude Include="renderer\ShaderExecutable9.h" /> <ClInclude Include="renderer\ShaderExecutable9.h" />
<ClInclude Include="renderer\shaders\compiled\clear11ps.h" />
<ClInclude Include="renderer\shaders\compiled\clear11vs.h" />
<ClInclude Include="renderer\shaders\compiled\componentmaskps.h" /> <ClInclude Include="renderer\shaders\compiled\componentmaskps.h" />
<ClInclude Include="renderer\shaders\compiled\flipyvs.h" /> <ClInclude Include="renderer\shaders\compiled\flipyvs.h" />
<ClInclude Include="renderer\shaders\compiled\luminanceps.h" /> <ClInclude Include="renderer\shaders\compiled\luminanceps.h" />
...@@ -355,6 +357,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -355,6 +357,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<None Include="libGLESv2.def" /> <None Include="libGLESv2.def" />
<None Include="renderer\shaders\Blit.ps" /> <None Include="renderer\shaders\Blit.ps" />
<None Include="renderer\shaders\Blit.vs" /> <None Include="renderer\shaders\Blit.vs" />
<None Include="renderer\shaders\Clear11.hlsl" />
<None Include="renderer\shaders\generate_shaders.bat" /> <None Include="renderer\shaders\generate_shaders.bat" />
<None Include="renderer\shaders\Passthrough11.hlsl" /> <None Include="renderer\shaders\Passthrough11.hlsl" />
</ItemGroup> </ItemGroup>
......
...@@ -391,6 +391,12 @@ ...@@ -391,6 +391,12 @@
<ClInclude Include="renderer\shaders\compiled\passthroughlumalpha11ps.h"> <ClInclude Include="renderer\shaders\compiled\passthroughlumalpha11ps.h">
<Filter>Renderer\Shaders\Compiled</Filter> <Filter>Renderer\Shaders\Compiled</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="renderer\shaders\compiled\clear11ps.h">
<Filter>Renderer\Shaders\Compiled</Filter>
</ClInclude>
<ClInclude Include="renderer\shaders\compiled\clear11vs.h">
<Filter>Renderer\Shaders\Compiled</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="libGLESv2.def"> <None Include="libGLESv2.def">
...@@ -408,6 +414,9 @@ ...@@ -408,6 +414,9 @@
<None Include="renderer\shaders\Passthrough11.hlsl"> <None Include="renderer\shaders\Passthrough11.hlsl">
<Filter>Renderer\Shaders</Filter> <Filter>Renderer\Shaders</Filter>
</None> </None>
<None Include="renderer\shaders\Clear11.hlsl">
<Filter>Renderer\Shaders</Filter>
</None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="libGLESv2.rc" /> <ResourceCompile Include="libGLESv2.rc" />
......
...@@ -32,6 +32,9 @@ ...@@ -32,6 +32,9 @@
#include "libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h" #include "libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h"
#include "libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h" #include "libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h"
#include "libGLESv2/renderer/shaders/compiled/clear11vs.h"
#include "libGLESv2/renderer/shaders/compiled/clear11ps.h"
#include <sstream> #include <sstream>
namespace rx namespace rx
...@@ -69,6 +72,14 @@ Renderer11::Renderer11(egl::Display *display, HDC hDc) : Renderer(display), mDc( ...@@ -69,6 +72,14 @@ Renderer11::Renderer11(egl::Display *display, HDC hDc) : Renderer(display), mDc(
mCopyLumPS = NULL; mCopyLumPS = NULL;
mCopyLumAlphaPS = NULL; mCopyLumAlphaPS = NULL;
mClearResourcesInitialized = false;
mClearVB = NULL;
mClearIL = NULL;
mClearVS = NULL;
mClearPS = NULL;
mClearScissorRS = NULL;
mClearNoScissorRS = NULL;
mD3d11Module = NULL; mD3d11Module = NULL;
mDxgiModule = NULL; mDxgiModule = NULL;
...@@ -1220,8 +1231,7 @@ void Renderer11::clear(const gl::ClearParameters &clearParams, gl::Framebuffer * ...@@ -1220,8 +1231,7 @@ void Renderer11::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *
if (needMaskedColorClear || needMaskedStencilClear || needScissoredClear) if (needMaskedColorClear || needMaskedStencilClear || needScissoredClear)
{ {
// TODO maskedClear(clearParams);
UNIMPLEMENTED();
} }
else else
{ {
...@@ -1293,6 +1303,166 @@ void Renderer11::clear(const gl::ClearParameters &clearParams, gl::Framebuffer * ...@@ -1293,6 +1303,166 @@ void Renderer11::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *
} }
} }
void Renderer11::maskedClear(const gl::ClearParameters &clearParams)
{
HRESULT result;
if (!mClearResourcesInitialized)
{
ASSERT(!mClearVB && !mClearVS && !mClearPS && !mClearScissorRS && !mClearNoScissorRS);
D3D11_BUFFER_DESC vbDesc;
vbDesc.ByteWidth = sizeof(d3d11::PositionDepthColorVertex) * 4;
vbDesc.Usage = D3D11_USAGE_DYNAMIC;
vbDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
vbDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
vbDesc.MiscFlags = 0;
vbDesc.StructureByteStride = 0;
result = mDevice->CreateBuffer(&vbDesc, NULL, &mClearVB);
ASSERT(SUCCEEDED(result));
d3d11::SetDebugName(mClearVB, "Renderer11 masked clear vertex buffer");
D3D11_INPUT_ELEMENT_DESC quadLayout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
result = mDevice->CreateInputLayout(quadLayout, 2, g_VS_Clear, sizeof(g_VS_Clear), &mClearIL);
ASSERT(SUCCEEDED(result));
d3d11::SetDebugName(mClearIL, "Renderer11 masked clear input layout");
result = mDevice->CreateVertexShader(g_VS_Clear, sizeof(g_VS_Clear), NULL, &mClearVS);
ASSERT(SUCCEEDED(result));
d3d11::SetDebugName(mClearVS, "Renderer11 masked clear vertex shader");
result = mDevice->CreatePixelShader(g_PS_Clear, sizeof(g_PS_Clear), NULL, &mClearPS);
ASSERT(SUCCEEDED(result));
d3d11::SetDebugName(mClearPS, "Renderer11 masked clear pixel shader");
D3D11_RASTERIZER_DESC rsScissorDesc;
rsScissorDesc.FillMode = D3D11_FILL_SOLID;
rsScissorDesc.CullMode = D3D11_CULL_NONE;
rsScissorDesc.FrontCounterClockwise = FALSE;
rsScissorDesc.DepthBias = 0;
rsScissorDesc.DepthBiasClamp = 0.0f;
rsScissorDesc.SlopeScaledDepthBias = 0.0f;
rsScissorDesc.DepthClipEnable = FALSE;
rsScissorDesc.ScissorEnable = TRUE;
rsScissorDesc.MultisampleEnable = FALSE;
rsScissorDesc.AntialiasedLineEnable = FALSE;
result = mDevice->CreateRasterizerState(&rsScissorDesc, &mClearScissorRS);
ASSERT(SUCCEEDED(result));
d3d11::SetDebugName(mClearScissorRS, "Renderer11 masked clear scissor rasterizer state");
D3D11_RASTERIZER_DESC rsNoScissorDesc;
rsNoScissorDesc.FillMode = D3D11_FILL_SOLID;
rsNoScissorDesc.CullMode = D3D11_CULL_NONE;
rsNoScissorDesc.FrontCounterClockwise = FALSE;
rsNoScissorDesc.DepthBias = 0;
rsNoScissorDesc.DepthBiasClamp = 0.0f;
rsNoScissorDesc.SlopeScaledDepthBias = 0.0f;
rsNoScissorDesc.DepthClipEnable = FALSE;
rsNoScissorDesc.ScissorEnable = FALSE;
rsNoScissorDesc.MultisampleEnable = FALSE;
rsNoScissorDesc.AntialiasedLineEnable = FALSE;
result = mDevice->CreateRasterizerState(&rsNoScissorDesc, &mClearNoScissorRS);
ASSERT(SUCCEEDED(result));
d3d11::SetDebugName(mClearNoScissorRS, "Renderer11 masked clear no scissor rasterizer state");
mClearResourcesInitialized = true;
}
// Prepare the depth stencil state to write depth values if the depth should be cleared
// and stencil values if the stencil should be cleared
gl::DepthStencilState glDSState;
glDSState.depthTest = (clearParams.mask & GL_DEPTH_BUFFER_BIT) != 0;
glDSState.depthFunc = GL_ALWAYS;
glDSState.depthMask = (clearParams.mask & GL_DEPTH_BUFFER_BIT) != 0;
glDSState.stencilTest = (clearParams.mask & GL_STENCIL_BUFFER_BIT) != 0;
glDSState.stencilFunc = GL_ALWAYS;
glDSState.stencilMask = 0;
glDSState.stencilFail = GL_REPLACE;
glDSState.stencilPassDepthFail = GL_REPLACE;
glDSState.stencilPassDepthPass = GL_REPLACE;
glDSState.stencilWritemask = clearParams.stencilWriteMask;
glDSState.stencilBackFunc = GL_ALWAYS;
glDSState.stencilBackMask = 0;
glDSState.stencilBackFail = GL_REPLACE;
glDSState.stencilBackPassDepthFail = GL_REPLACE;
glDSState.stencilBackPassDepthPass = GL_REPLACE;
glDSState.stencilBackWritemask = clearParams.stencilWriteMask;
int stencilClear = clearParams.stencilClearValue & 0x000000FF;
ID3D11DepthStencilState *dsState = mStateCache.getDepthStencilState(glDSState);
// Prepare the blend state to use a write mask if the color buffer should be cleared
gl::BlendState glBlendState;
glBlendState.blend = false;
glBlendState.sourceBlendRGB = GL_ONE;
glBlendState.destBlendRGB = GL_ZERO;
glBlendState.sourceBlendAlpha = GL_ONE;
glBlendState.destBlendAlpha = GL_ZERO;
glBlendState.blendEquationRGB = GL_FUNC_ADD;
glBlendState.blendEquationAlpha = GL_FUNC_ADD;
glBlendState.colorMaskRed = (clearParams.mask & GL_COLOR_BUFFER_BIT) ? clearParams.colorMaskRed : false;
glBlendState.colorMaskGreen = (clearParams.mask & GL_COLOR_BUFFER_BIT) ? clearParams.colorMaskGreen : false;
glBlendState.colorMaskBlue = (clearParams.mask & GL_COLOR_BUFFER_BIT) ? clearParams.colorMaskBlue : false;
glBlendState.colorMaskBlue = (clearParams.mask & GL_COLOR_BUFFER_BIT) ? clearParams.colorMaskBlue : false;
glBlendState.sampleAlphaToCoverage = false;
glBlendState.dither = false;
static const float blendFactors[4] = { 1.0f, 1.0f, 1.0f, 1.0f };
static const UINT sampleMask = 0xFFFFFFFF;
ID3D11BlendState *blendState = mStateCache.getBlendState(glBlendState);
// Set the vertices
D3D11_MAPPED_SUBRESOURCE mappedResource;
result = mDeviceContext->Map(mClearVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
if (FAILED(result))
{
ERR("Failed to map masked clear vertex buffer, HRESULT: 0x%X.", result);
return;
}
d3d11::PositionDepthColorVertex *vertices = reinterpret_cast<d3d11::PositionDepthColorVertex*>(mappedResource.pData);
float depthClear = gl::clamp01(clearParams.depthClearValue);
d3d11::SetPositionDepthColorVertex(&vertices[0], -1.0f, 1.0f, depthClear, clearParams.colorClearValue);
d3d11::SetPositionDepthColorVertex(&vertices[1], -1.0f, -1.0f, depthClear, clearParams.colorClearValue);
d3d11::SetPositionDepthColorVertex(&vertices[2], 1.0f, 1.0f, depthClear, clearParams.colorClearValue);
d3d11::SetPositionDepthColorVertex(&vertices[3], 1.0f, -1.0f, depthClear, clearParams.colorClearValue);
mDeviceContext->Unmap(mClearVB, 0);
// Apply state
mDeviceContext->OMSetBlendState(blendState, blendFactors, sampleMask);
mDeviceContext->OMSetDepthStencilState(dsState, stencilClear);
mDeviceContext->RSSetState(mScissorEnabled ? mClearScissorRS : mClearNoScissorRS);
// Apply shaders
mDeviceContext->IASetInputLayout(mClearIL);
mDeviceContext->VSSetShader(mClearVS, NULL, 0);
mDeviceContext->PSSetShader(mClearPS, NULL, 0);
// Apply vertex buffer
static UINT stride = sizeof(d3d11::PositionDepthColorVertex);
static UINT startIdx = 0;
mDeviceContext->IASetVertexBuffers(0, 1, &mClearVB, &stride, &startIdx);
mDeviceContext->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
// Draw the clear quad
mDeviceContext->Draw(4, 0);
// Clean up
markAllStateDirty();
}
void Renderer11::markAllStateDirty() void Renderer11::markAllStateDirty()
{ {
mAppliedRenderTargetSerial = 0; mAppliedRenderTargetSerial = 0;
...@@ -1391,6 +1561,44 @@ void Renderer11::releaseDeviceResources() ...@@ -1391,6 +1561,44 @@ void Renderer11::releaseDeviceResources()
} }
mCopyResourcesInitialized = false; mCopyResourcesInitialized = false;
if (mClearVB)
{
mClearVB->Release();
mClearVB = NULL;
}
if (mClearIL)
{
mClearIL->Release();
mClearIL = NULL;
}
if (mClearVS)
{
mClearVS->Release();
mClearVS = NULL;
}
if (mClearPS)
{
mClearPS->Release();
mClearPS = NULL;
}
if (mClearScissorRS)
{
mClearScissorRS->Release();
mClearScissorRS = NULL;
}
if (mClearNoScissorRS)
{
mClearNoScissorRS->Release();
mClearNoScissorRS = NULL;
}
mClearResourcesInitialized = false;
} }
void Renderer11::markDeviceLost() void Renderer11::markDeviceLost()
......
...@@ -168,6 +168,8 @@ class Renderer11 : public Renderer ...@@ -168,6 +168,8 @@ class Renderer11 : public Renderer
GLenum format, GLenum type, GLsizei outputPitch, bool packReverseRowOrder, GLenum format, GLenum type, GLsizei outputPitch, bool packReverseRowOrder,
GLint packAlignment, void *pixels); GLint packAlignment, void *pixels);
void maskedClear(const gl::ClearParameters &clearParams);
HMODULE mD3d11Module; HMODULE mD3d11Module;
HMODULE mDxgiModule; HMODULE mDxgiModule;
HDC mDc; HDC mDc;
...@@ -256,6 +258,15 @@ class Renderer11 : public Renderer ...@@ -256,6 +258,15 @@ class Renderer11 : public Renderer
ID3D11PixelShader *mCopyLumPS; ID3D11PixelShader *mCopyLumPS;
ID3D11PixelShader *mCopyLumAlphaPS; ID3D11PixelShader *mCopyLumAlphaPS;
// Masked clear resources
bool mClearResourcesInitialized;
ID3D11Buffer *mClearVB;
ID3D11InputLayout *mClearIL;
ID3D11VertexShader *mClearVS;
ID3D11PixelShader *mClearPS;
ID3D11RasterizerState *mClearScissorRS;
ID3D11RasterizerState *mClearNoScissorRS;
ID3D11Device *mDevice; ID3D11Device *mDevice;
D3D_FEATURE_LEVEL mFeatureLevel; D3D_FEATURE_LEVEL mFeatureLevel;
ID3D11DeviceContext *mDeviceContext; ID3D11DeviceContext *mDeviceContext;
......
...@@ -384,6 +384,18 @@ void SetPositionTexCoordVertex(PositionTexCoordVertex* vertex, float x, float y, ...@@ -384,6 +384,18 @@ void SetPositionTexCoordVertex(PositionTexCoordVertex* vertex, float x, float y,
vertex->v = v; vertex->v = v;
} }
void SetPositionDepthColorVertex(PositionDepthColorVertex* vertex, float x, float y, float z,
const gl::Color &color)
{
vertex->x = x;
vertex->y = y;
vertex->z = z;
vertex->r = color.red;
vertex->g = color.green;
vertex->b = color.blue;
vertex->a = color.alpha;
}
size_t ComputePixelSizeBits(DXGI_FORMAT format) size_t ComputePixelSizeBits(DXGI_FORMAT format)
{ {
switch (format) switch (format)
......
...@@ -57,6 +57,14 @@ struct PositionTexCoordVertex ...@@ -57,6 +57,14 @@ struct PositionTexCoordVertex
}; };
void SetPositionTexCoordVertex(PositionTexCoordVertex* vertex, float x, float y, float u, float v); void SetPositionTexCoordVertex(PositionTexCoordVertex* vertex, float x, float y, float u, float v);
struct PositionDepthColorVertex
{
float x, y, z;
float r, g, b, a;
};
void SetPositionDepthColorVertex(PositionDepthColorVertex* vertex, float x, float y, float z,
const gl::Color &color);
size_t ComputePixelSizeBits(DXGI_FORMAT format); size_t ComputePixelSizeBits(DXGI_FORMAT format);
size_t ComputeBlockSizeBits(DXGI_FORMAT format); size_t ComputeBlockSizeBits(DXGI_FORMAT format);
......
void VS_Clear( in float3 inPosition : POSITION, in float4 inColor : COLOR,
out float4 outPosition : SV_POSITION, out float4 outColor : COLOR)
{
outPosition = float4(inPosition, 1.0f);
outColor = inColor;
}
float4 PS_Clear(in float4 inPosition : SV_POSITION, in float4 inColor : COLOR) : SV_TARGET0
{
return inColor;
}
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// fxc /E PS_Clear /T ps_4_0 /Fh compiled/clear11ps.h Clear11.hlsl
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------ ------
// SV_POSITION 0 xyzw 0 POS float
// COLOR 0 xyzw 1 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------ ------
// SV_TARGET 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_input_ps linear v1.xyzw
dcl_output o0.xyzw
mov o0.xyzw, v1.xyzw
ret
// Approximately 2 instruction slots used
#endif
const BYTE g_PS_Clear[] =
{
68, 88, 66, 67, 206, 120,
117, 238, 118, 127, 10, 87,
80, 75, 114, 198, 95, 2,
120, 102, 1, 0, 0, 0,
208, 1, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
140, 0, 0, 0, 224, 0,
0, 0, 20, 1, 0, 0,
84, 1, 0, 0, 82, 68,
69, 70, 80, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
28, 0, 0, 0, 0, 4,
255, 255, 0, 1, 0, 0,
28, 0, 0, 0, 77, 105,
99, 114, 111, 115, 111, 102,
116, 32, 40, 82, 41, 32,
72, 76, 83, 76, 32, 83,
104, 97, 100, 101, 114, 32,
67, 111, 109, 112, 105, 108,
101, 114, 32, 57, 46, 50,
57, 46, 57, 53, 50, 46,
51, 49, 49, 49, 0, 171,
171, 171, 73, 83, 71, 78,
76, 0, 0, 0, 2, 0,
0, 0, 8, 0, 0, 0,
56, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
3, 0, 0, 0, 0, 0,
0, 0, 15, 0, 0, 0,
68, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 1, 0,
0, 0, 15, 15, 0, 0,
83, 86, 95, 80, 79, 83,
73, 84, 73, 79, 78, 0,
67, 79, 76, 79, 82, 0,
171, 171, 79, 83, 71, 78,
44, 0, 0, 0, 1, 0,
0, 0, 8, 0, 0, 0,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 0, 0,
0, 0, 15, 0, 0, 0,
83, 86, 95, 84, 65, 82,
71, 69, 84, 0, 171, 171,
83, 72, 68, 82, 56, 0,
0, 0, 64, 0, 0, 0,
14, 0, 0, 0, 98, 16,
0, 3, 242, 16, 16, 0,
1, 0, 0, 0, 101, 0,
0, 3, 242, 32, 16, 0,
0, 0, 0, 0, 54, 0,
0, 5, 242, 32, 16, 0,
0, 0, 0, 0, 70, 30,
16, 0, 1, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 116, 0, 0, 0,
2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0
};
#if 0
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// fxc /E VS_Clear /T vs_4_0 /Fh compiled/clear11vs.h Clear11.hlsl
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------ ------
// POSITION 0 xyz 0 NONE float xyz
// COLOR 0 xyzw 1 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------ ------
// SV_POSITION 0 xyzw 0 POS float xyzw
// COLOR 0 xyzw 1 NONE float xyzw
//
vs_4_0
dcl_input v0.xyz
dcl_input v1.xyzw
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
mov o0.xyz, v0.xyzx
mov o0.w, l(1.000000)
mov o1.xyzw, v1.xyzw
ret
// Approximately 4 instruction slots used
#endif
const BYTE g_VS_Clear[] =
{
68, 88, 66, 67, 109, 138,
105, 83, 86, 190, 83, 125,
72, 102, 194, 136, 46, 69,
17, 121, 1, 0, 0, 0,
48, 2, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
140, 0, 0, 0, 220, 0,
0, 0, 48, 1, 0, 0,
180, 1, 0, 0, 82, 68,
69, 70, 80, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
28, 0, 0, 0, 0, 4,
254, 255, 0, 1, 0, 0,
28, 0, 0, 0, 77, 105,
99, 114, 111, 115, 111, 102,
116, 32, 40, 82, 41, 32,
72, 76, 83, 76, 32, 83,
104, 97, 100, 101, 114, 32,
67, 111, 109, 112, 105, 108,
101, 114, 32, 57, 46, 50,
57, 46, 57, 53, 50, 46,
51, 49, 49, 49, 0, 171,
171, 171, 73, 83, 71, 78,
72, 0, 0, 0, 2, 0,
0, 0, 8, 0, 0, 0,
56, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 0, 0,
0, 0, 7, 7, 0, 0,
65, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 1, 0,
0, 0, 15, 15, 0, 0,
80, 79, 83, 73, 84, 73,
79, 78, 0, 67, 79, 76,
79, 82, 0, 171, 79, 83,
71, 78, 76, 0, 0, 0,
2, 0, 0, 0, 8, 0,
0, 0, 56, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 15, 0,
0, 0, 68, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 15, 0,
0, 0, 83, 86, 95, 80,
79, 83, 73, 84, 73, 79,
78, 0, 67, 79, 76, 79,
82, 0, 171, 171, 83, 72,
68, 82, 124, 0, 0, 0,
64, 0, 1, 0, 31, 0,
0, 0, 95, 0, 0, 3,
114, 16, 16, 0, 0, 0,
0, 0, 95, 0, 0, 3,
242, 16, 16, 0, 1, 0,
0, 0, 103, 0, 0, 4,
242, 32, 16, 0, 0, 0,
0, 0, 1, 0, 0, 0,
101, 0, 0, 3, 242, 32,
16, 0, 1, 0, 0, 0,
54, 0, 0, 5, 114, 32,
16, 0, 0, 0, 0, 0,
70, 18, 16, 0, 0, 0,
0, 0, 54, 0, 0, 5,
130, 32, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
0, 0, 128, 63, 54, 0,
0, 5, 242, 32, 16, 0,
1, 0, 0, 0, 70, 30,
16, 0, 1, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 116, 0, 0, 0,
4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0
};
...@@ -18,3 +18,6 @@ fxc /E PS_PassthroughRGBA /T ps_4_0 /Fh compiled/passthroughrgba11ps.h Passthrou ...@@ -18,3 +18,6 @@ fxc /E PS_PassthroughRGBA /T ps_4_0 /Fh compiled/passthroughrgba11ps.h Passthrou
fxc /E PS_PassthroughRGB /T ps_4_0 /Fh compiled/passthroughrgb11ps.h Passthrough11.hlsl fxc /E PS_PassthroughRGB /T ps_4_0 /Fh compiled/passthroughrgb11ps.h Passthrough11.hlsl
fxc /E PS_PassthroughLum /T ps_4_0 /Fh compiled/passthroughlum11ps.h Passthrough11.hlsl fxc /E PS_PassthroughLum /T ps_4_0 /Fh compiled/passthroughlum11ps.h Passthrough11.hlsl
fxc /E PS_PassthroughLumAlpha /T ps_4_0 /Fh compiled/passthroughlumalpha11ps.h Passthrough11.hlsl fxc /E PS_PassthroughLumAlpha /T ps_4_0 /Fh compiled/passthroughlumalpha11ps.h Passthrough11.hlsl
fxc /E VS_Clear /T vs_4_0 /Fh compiled/clear11vs.h Clear11.hlsl
fxc /E PS_Clear /T ps_4_0 /Fh compiled/clear11ps.h Clear11.hlsl
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment