Lot more Metal changes
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import Common;
|
||||
import Scene;
|
||||
import VertexData;
|
||||
import StaticMeshVertexData;
|
||||
import MaterialParameter;
|
||||
|
||||
struct PrimitiveAttributes
|
||||
@@ -36,10 +37,12 @@ void meshMain(
|
||||
uint local_idx0 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 0];
|
||||
uint local_idx1 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 1];
|
||||
uint local_idx2 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 2];
|
||||
indices[p] = uint3(local_idx0, local_idx1, local_idx2);
|
||||
indices[p] = uint3(local_idx0, local_idx1, local_idx2);
|
||||
PrimitiveAttributes primAttr;
|
||||
#ifdef VISIBILITY
|
||||
prim[p].prim = encodePrimitive(meshletId);
|
||||
primAttr.prim = encodePrimitive(meshletId);
|
||||
#endif
|
||||
prim[p] = primAttr;
|
||||
}
|
||||
}
|
||||
for(uint i = threadID; i < MAX_VERTICES; i += MESH_GROUP_SIZE)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import Common;
|
||||
import Scene;
|
||||
import VertexData;
|
||||
import StaticMeshVertexData;
|
||||
import MaterialParameter;
|
||||
|
||||
struct PrimitiveAttributes
|
||||
@@ -37,11 +38,13 @@ void meshMain(
|
||||
uint local_idx0 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 0];
|
||||
uint local_idx1 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 1];
|
||||
uint local_idx2 = pScene.primitiveIndices[m.primitiveOffset + (p * 3) + 2];
|
||||
indices[p] = uint3(local_idx0, local_idx1, local_idx2);
|
||||
prim[p].cull = false;//cull.triangleCulled(p);
|
||||
indices[p] = uint3(local_idx0, local_idx1, local_idx2);
|
||||
PrimitiveAttributes primAttr;
|
||||
primAttr.cull = false;//cull.triangleCulled(p);
|
||||
#ifdef VISIBILITY
|
||||
prim[p].prim = encodePrimitive(meshletId);
|
||||
primAttr.prim = encodePrimitive(meshletId);
|
||||
#endif
|
||||
prim[p] = primAttr;
|
||||
}
|
||||
}
|
||||
for(uint i = threadID; i < MAX_VERTICES; i += MESH_GROUP_SIZE)
|
||||
|
||||
@@ -19,7 +19,7 @@ struct ComputeParams
|
||||
uint N, lengthScale0, lengthScale1, lengthScale2, lengthScale3;
|
||||
float foamBias, foamDecayRate, foamAdd, foamThreshold;
|
||||
RWTexture2DArray<float4> spectrumTextures, initialSpectrumTextures, displacementTextures;
|
||||
RWTexture2DArray<float2> slopeTexture;
|
||||
RWTexture2DArray<float4> slopeTexture;
|
||||
RWTexture2D<half> boyancyData;
|
||||
StructuredBuffer<SpectrumParameters> spectrums;
|
||||
SamplerState linear_repeat_sampler;
|
||||
@@ -306,7 +306,7 @@ void CS_AssembleMaps(uint3 id : SV_DISPATCHTHREADID) {
|
||||
|
||||
|
||||
pParams.displacementTextures[uint3(id.xy, i)] = float4(displacement, foam);
|
||||
pParams.slopeTexture[uint3(id.xy, i)] = float2(slopes);
|
||||
pParams.slopeTexture[uint3(id.xy, i)] = float4(slopes, 0, 0);
|
||||
|
||||
if (i == 0) {
|
||||
pParams.boyancyData[id.xy] = half(displacement.y);
|
||||
|
||||
@@ -21,7 +21,7 @@ float Beckmann(float ndoth, float roughness) {
|
||||
}
|
||||
|
||||
[shader("pixel")]
|
||||
float4 main(WaterVertex vert) : SV_TARGET {
|
||||
float4 fragmentMain(WaterVertex vert) : SV_TARGET {
|
||||
float3 lightDir = -normalize(pWaterMaterial.sunDirection);
|
||||
float3 viewDir = normalize(pViewParams.cameraPos_WS.xyz - vert.position_WS);
|
||||
float3 halfwayDir = normalize(lightDir + viewDir);
|
||||
|
||||
@@ -19,8 +19,12 @@ struct Phong : IBRDF
|
||||
|
||||
__init()
|
||||
{
|
||||
baseColor = float3(0, 0, 0);
|
||||
alpha = 1;
|
||||
specular = float3(0, 0, 0);
|
||||
normal = float3(0, 0, 1);
|
||||
ambient = float3(0, 0, 0);
|
||||
shininess = 0;
|
||||
}
|
||||
|
||||
float3 evaluate(float3 viewDir_TS, float3 lightDir_TS, float3 lightColor)
|
||||
@@ -58,8 +62,12 @@ struct BlinnPhong : IBRDF
|
||||
|
||||
__init()
|
||||
{
|
||||
baseColor = float3(0, 0, 0);
|
||||
alpha = 1;
|
||||
specularColor = float3(0, 0, 0);
|
||||
normal = float3(0, 0, 1);
|
||||
shininess = 0;
|
||||
ambient = float3(0, 0, 0);
|
||||
}
|
||||
|
||||
float3 evaluate(float3 viewDir_TS, float3 lightDir_TS, float3 lightColor)
|
||||
@@ -94,6 +102,7 @@ struct CelShading : IBRDF
|
||||
|
||||
__init()
|
||||
{
|
||||
baseColor = float3(0, 0, 0);
|
||||
alpha = 1;
|
||||
normal = float3(0, 0, 1);
|
||||
}
|
||||
@@ -140,6 +149,7 @@ struct CookTorrance : IBRDF
|
||||
|
||||
__init()
|
||||
{
|
||||
baseColor = float3(0, 0, 0);
|
||||
alpha = 1;
|
||||
normal = float3(0, 0, 1);
|
||||
roughness = 0;
|
||||
|
||||
@@ -8,34 +8,35 @@ import Scene;
|
||||
// associatedtype BRDF : IBRDF;
|
||||
// BRDF prepare(MaterialParameter input);
|
||||
//};
|
||||
|
||||
layout(set=4, binding=0)
|
||||
Texture2D textureArray[];
|
||||
layout(set=4, binding=1)
|
||||
SamplerState samplerArray[];
|
||||
layout(set=4, binding=2)
|
||||
StructuredBuffer<float> floatArray;
|
||||
struct MaterialResources
|
||||
{
|
||||
StructuredBuffer<float> floatArray;
|
||||
Texture2D textureArray[512];
|
||||
SamplerState samplerArray[512];
|
||||
};
|
||||
layout(set=4)
|
||||
ParameterBlock<MaterialResources> pResources;
|
||||
|
||||
Texture2D getMaterialTextureParameter(uint index)
|
||||
{
|
||||
return textureArray[pOffsets.textureOffset + index];
|
||||
return pResources.textureArray[pOffsets.textureOffset + index];
|
||||
}
|
||||
|
||||
SamplerState getMaterialSamplerParameter(uint index)
|
||||
{
|
||||
return samplerArray[pOffsets.samplerOffset + index];
|
||||
return pResources.samplerArray[pOffsets.samplerOffset + index];
|
||||
}
|
||||
|
||||
float getMaterialFloatParameter(uint index)
|
||||
{
|
||||
return floatArray[pOffsets.floatOffset + index];
|
||||
return pResources.floatArray[pOffsets.floatOffset + index];
|
||||
}
|
||||
|
||||
float3 getMaterialVectorParameter(uint index)
|
||||
{
|
||||
return float3(
|
||||
floatArray[pOffsets.floatOffset + index],
|
||||
floatArray[pOffsets.floatOffset + index + 1],
|
||||
floatArray[pOffsets.floatOffset + index + 2]
|
||||
pResources.floatArray[pOffsets.floatOffset + index],
|
||||
pResources.floatArray[pOffsets.floatOffset + index + 1],
|
||||
pResources.floatArray[pOffsets.floatOffset + index + 2]
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user