fix memory layout
This commit is contained in:
@@ -32,6 +32,7 @@ for shader in normal_shaders:
|
|||||||
f"-I{SHADERS_INCLUDE}",
|
f"-I{SHADERS_INCLUDE}",
|
||||||
"--spirv-val",
|
"--spirv-val",
|
||||||
"-gVS",
|
"-gVS",
|
||||||
|
# "-q",
|
||||||
"--target-env",
|
"--target-env",
|
||||||
TARGET_ENV,
|
TARGET_ENV,
|
||||||
"-o",
|
"-o",
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ layout(set = 0, binding = 3, std430) restrict readonly buffer Indicies {
|
|||||||
} indicies;
|
} indicies;
|
||||||
|
|
||||||
struct Object {
|
struct Object {
|
||||||
|
// TRANSFORM
|
||||||
|
uint transform_offset;
|
||||||
|
|
||||||
// MESH
|
// MESH
|
||||||
uint vert_offset;
|
uint vert_offset;
|
||||||
uint index_offset;
|
uint index_offset;
|
||||||
@@ -55,7 +58,6 @@ struct Object {
|
|||||||
uint subdivision_log2;
|
uint subdivision_log2;
|
||||||
|
|
||||||
// MATERIAL
|
// MATERIAL
|
||||||
vec4 colour_and_roughness;
|
|
||||||
float metallic;
|
float metallic;
|
||||||
float subsurface;
|
float subsurface;
|
||||||
float specular;
|
float specular;
|
||||||
@@ -64,9 +66,7 @@ struct Object {
|
|||||||
float sheen_tint;
|
float sheen_tint;
|
||||||
float clear_coat_gloss;
|
float clear_coat_gloss;
|
||||||
float clear_coat;
|
float clear_coat;
|
||||||
|
vec4 colour_and_roughness;
|
||||||
// TRANSFORM
|
|
||||||
uint transform_offset;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
layout(set = 0, binding = 4, std430) restrict readonly buffer Objects {
|
layout(set = 0, binding = 4, std430) restrict readonly buffer Objects {
|
||||||
@@ -74,10 +74,9 @@ layout(set = 0, binding = 4, std430) restrict readonly buffer Objects {
|
|||||||
} objects;
|
} objects;
|
||||||
|
|
||||||
struct Transform {
|
struct Transform {
|
||||||
vec3 x;
|
vec4 x;
|
||||||
vec3 y;
|
vec4 y;
|
||||||
vec3 z;
|
vec4 z;
|
||||||
vec3 w;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
layout(set = 0, binding = 5, std430) restrict readonly buffer Transforms {
|
layout(set = 0, binding = 5, std430) restrict readonly buffer Transforms {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ void main() {
|
|||||||
|
|
||||||
// transform to world space
|
// transform to world space
|
||||||
Transform t = transforms.transforms[obj.transform_offset];
|
Transform t = transforms.transforms[obj.transform_offset];
|
||||||
mat3 object_transform = mat3(t.x, t.y, t.z);
|
mat3 object_transform = mat3(t.x.xyz, t.y.xyz, t.z.xyz);
|
||||||
vec3 normal = normalize((inverse(object_transform) * local_normal).xyz);
|
vec3 normal = normalize((inverse(object_transform) * local_normal).xyz);
|
||||||
|
|
||||||
hit_value.normal = normal;
|
hit_value.normal = normal;
|
||||||
|
|||||||
Reference in New Issue
Block a user