-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshaders.hlsl
64 lines (54 loc) · 1.42 KB
/
shaders.hlsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//*********************************************************
//
// Copyright (c) Microsoft. All rights reserved.
// This code is licensed under the MIT License (MIT).
// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
//
//*********************************************************
// #DXR Extra: Perspective Camera
cbuffer CameraParams : register(b0)
{
float4x4 view;
float4x4 projection;
}
// #DXR Extra: Refitting (Rasterization)
struct InstanceProperties
{
float4x4 objectToWorld;
};
StructuredBuffer<InstanceProperties> instanceProps : register(t0);
uint instanceIndex : register(b1);
struct PSInput
{
float4 position : SV_POSITION;
float4 color : COLOR;
};
PSInput VSMain(float4 position : POSITION, float4 color : COLOR)
{
PSInput result;
// #DXR Extra: Perspective Camera
// #DXR Extra: Refitting (Rasterization)
float4 pos;
uint numStructs, stride;
instanceProps.GetDimensions(numStructs, stride);
if(instanceIndex >= numStructs)
{
pos = position;
}
else
{
pos = mul(instanceProps[instanceIndex].objectToWorld, position);
}
pos = mul(view, pos);
pos = mul(projection, pos);
result.position = pos;
result.color = color;
return result;
}
float4 PSMain(PSInput input) : SV_TARGET
{
return input.color;
}