VS: Add source file properties to set the hlsl shader entry point and model
Create properties VS_SHADER_ENTRYPOINT and VS_SHADER_MODEL. Without these many .hlsl source files may not be possible to use. Extend the VSWinStorePhone test project to cover them.
This commit is contained in:
parent
433c6d4689
commit
2a224b4ce3
|
@ -291,6 +291,8 @@ Properties on Source Files
|
|||
/prop_sf/OBJECT_OUTPUTS
|
||||
/prop_sf/SYMBOLIC
|
||||
/prop_sf/VS_DEPLOYMENT_CONTENT
|
||||
/prop_sf/VS_SHADER_ENTRYPOINT
|
||||
/prop_sf/VS_SHADER_MODEL
|
||||
/prop_sf/VS_SHADER_TYPE
|
||||
/prop_sf/WRAP_EXCLUDE
|
||||
/prop_sf/XCODE_EXPLICIT_FILE_TYPE
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
VS_SHADER_ENTRYPOINT
|
||||
--------------------
|
||||
|
||||
Specifies the name of the entry point for the shader of a ``.hlsl`` source
|
||||
file.
|
|
@ -0,0 +1,5 @@
|
|||
VS_SHADER_MODEL
|
||||
---------------
|
||||
|
||||
Specifies the shader model of a ``.hlsl`` source file. Some shader types can
|
||||
only be used with recent shader models
|
|
@ -310,8 +310,10 @@ Other
|
|||
|
||||
* The Visual Studio generators learned to treat ``.hlsl`` source
|
||||
files as High Level Shading Language sources (using ``FXCompile``
|
||||
in ``.vcxproj`` files). A :prop_sf:`VS_SHADER_TYPE` source file
|
||||
property was added to specify the Shader Type.
|
||||
in ``.vcxproj`` files). Source file properties
|
||||
:prop_sf:`VS_SHADER_TYPE`, :prop_sf:`VS_SHADER_MODEL`, and
|
||||
:prop_sf:`VS_SHADER_ENTRYPOINT` were added added to specify the
|
||||
shader type, model, and entry point name.
|
||||
|
||||
New Diagnostics
|
||||
===============
|
||||
|
|
|
@ -1203,6 +1203,8 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
|
|||
bool toolHasSettings = false;
|
||||
std::string tool = "None";
|
||||
std::string shaderType;
|
||||
std::string shaderEntryPoint;
|
||||
std::string shaderModel;
|
||||
std::string ext = cmSystemTools::LowerCase(sf->GetExtension());
|
||||
if(ext == "hlsl")
|
||||
{
|
||||
|
@ -1213,6 +1215,18 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
|
|||
shaderType = st;
|
||||
toolHasSettings = true;
|
||||
}
|
||||
// Figure out which entry point to use if any
|
||||
if (const char* se = sf->GetProperty("VS_SHADER_ENTRYPOINT"))
|
||||
{
|
||||
shaderEntryPoint = se;
|
||||
toolHasSettings = true;
|
||||
}
|
||||
// Figure out which entry point to use if any
|
||||
if (const char* sm = sf->GetProperty("VS_SHADER_MODEL"))
|
||||
{
|
||||
shaderModel = sm;
|
||||
toolHasSettings = true;
|
||||
}
|
||||
}
|
||||
else if(ext == "jpg" ||
|
||||
ext == "png")
|
||||
|
@ -1295,7 +1309,18 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
|
|||
(*this->BuildFileStream) << cmVS10EscapeXML(shaderType)
|
||||
<< "</ShaderType>\n";
|
||||
}
|
||||
|
||||
if(!shaderEntryPoint.empty())
|
||||
{
|
||||
this->WriteString("<EntryPointName>", 3);
|
||||
(*this->BuildFileStream) << cmVS10EscapeXML(shaderEntryPoint)
|
||||
<< "</EntryPointName>\n";
|
||||
}
|
||||
if(!shaderModel.empty())
|
||||
{
|
||||
this->WriteString("<ShaderModel>", 3);
|
||||
(*this->BuildFileStream) << cmVS10EscapeXML(shaderModel)
|
||||
<< "</ShaderModel>\n";
|
||||
}
|
||||
this->WriteString("</", 2);
|
||||
(*this->BuildFileStream) << tool << ">\n";
|
||||
}
|
||||
|
|
|
@ -103,7 +103,13 @@ set_property(SOURCE ${RELEASE_CONTENT_FILES} PROPERTY
|
|||
VS_DEPLOYMENT_CONTENT $<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>,$<CONFIG:MinSizeRel>>)
|
||||
|
||||
set_property(SOURCE ${PIXELSHADER_FILES} PROPERTY VS_SHADER_TYPE Pixel)
|
||||
set_property(SOURCE ${PIXELSHADER_FILES} PROPERTY VS_SHADER_ENTRYPOINT mainPS)
|
||||
set_property(SOURCE ${PIXELSHADER_FILES} PROPERTY VS_SHADER_MODEL 4.0_level_9_3)
|
||||
|
||||
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_TYPE Vertex)
|
||||
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_ENTRYPOINT mainVS)
|
||||
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_MODEL 4.0_level_9_3)
|
||||
|
||||
|
||||
source_group("Source Files" FILES ${SOURCE_FILES})
|
||||
source_group("Header Files" FILES ${HEADER_FILES})
|
||||
|
|
|
@ -4,7 +4,7 @@ struct PixelShaderInput
|
|||
float3 color : COLOR0;
|
||||
};
|
||||
|
||||
float4 main(PixelShaderInput input) : SV_TARGET
|
||||
float4 mainPS(PixelShaderInput input) : SV_TARGET
|
||||
{
|
||||
return float4(input.color,1.0f);
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ struct VertexShaderOutput
|
|||
float3 color : COLOR0;
|
||||
};
|
||||
|
||||
VertexShaderOutput main(VertexShaderInput input)
|
||||
VertexShaderOutput mainVS(VertexShaderInput input)
|
||||
{
|
||||
VertexShaderOutput output;
|
||||
float4 pos = float4(input.pos, 1.0f);
|
||||
|
|
Loading…
Reference in New Issue