Skip to content

Commit 5aa24b2

Browse files
authored
Update RayTracing_InOneWeekend_Fragment.glsl
1 parent 282a913 commit 5aa24b2

File tree

1 file changed

+90
-1
lines changed

1 file changed

+90
-1
lines changed

shaders/RayTracing_InOneWeekend_Fragment.glsl

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,68 @@ void GetBoxNodeData(const in float i, inout vec4 boxNodeData0, inout vec4 boxNod
6969
boxNodeData1 = texelFetch(tAABB_DataTexture, uv1, 0);
7070
}
7171

72+
mat4 makeRotateX(float rot)
73+
{
74+
float s = sin(rot);
75+
float c = cos(rot);
76+
return mat4(
77+
1, 0, 0, 0,
78+
0, c, -s, 0,
79+
0, s, c, 0,
80+
0, 0, 0, 1
81+
);
82+
}
83+
mat4 makeRotateY(float rot)
84+
{
85+
float s = sin(rot);
86+
float c = cos(rot);
87+
return mat4(
88+
c, 0, s, 0,
89+
0, 1, 0, 0,
90+
-s, 0, c, 0,
91+
0, 0, 0, 1
92+
);
93+
}
94+
mat4 makeRotateZ(float rot)
95+
{
96+
float s = sin(rot);
97+
float c = cos(rot);
98+
return mat4(
99+
c, -s, 0, 0,
100+
s, c, 0, 0,
101+
0, 0, 1, 0,
102+
0, 0, 0, 1
103+
);
104+
}
105+
106+
mat4 makeScaleX(float s)
107+
{
108+
return mat4(
109+
s, 0, 0, 0,
110+
0, 1, 0, 0,
111+
0, 0, 1, 0,
112+
0, 0, 0, 1
113+
);
114+
}
115+
mat4 makeScaleY(float s)
116+
{
117+
return mat4(
118+
1, 0, 0, 0,
119+
0, s, 0, 0,
120+
0, 0, 1, 0,
121+
0, 0, 0, 1
122+
);
123+
}
124+
mat4 makeScaleZ(float s)
125+
{
126+
return mat4(
127+
1, 0, 0, 0,
128+
0, 1, 0, 0,
129+
0, 0, s, 0,
130+
0, 0, 0, 1
131+
);
132+
}
133+
72134

73135
//---------------------------------------------------------------------------------------
74136
float SceneIntersect( )
@@ -196,7 +258,34 @@ float SceneIntersect( )
196258

197259
sd4 = texelFetch(tShape_DataTexture, uv4, 0);
198260
if (uSceneIsDynamic)
199-
invTransformMatrix[3][1] -= sin(uTime + currentBoxNodeData1.w) * 2.0;
261+
{
262+
// animate Translation
263+
invTransformMatrix[3][1] = -1.0 + (sin(uTime + currentBoxNodeData1.w) * 1.5);
264+
265+
// animate Rotation
266+
/* mat4 mx = makeRotateX(uTime + currentBoxNodeData1.w);
267+
mat4 my = makeRotateY(uTime + currentBoxNodeData1.w);
268+
invTransformMatrix = mx * my * invTransformMatrix; */
269+
270+
// animate Scaling
271+
/* mat4 m;
272+
float mod3 = floor(mod(currentBoxNodeData1.w, 3.0));
273+
if (mod3 == 0.0)
274+
{
275+
m = makeScaleX(10.0 - abs(sin(uTime + currentBoxNodeData1.w) * 9.5));
276+
}
277+
else if (mod3 == 1.0)
278+
{
279+
m = makeScaleY(10.0 - abs(sin(uTime + currentBoxNodeData1.w) * 9.5));
280+
}
281+
else //mod3 == 2.0
282+
{
283+
m = makeScaleZ(10.0 - abs(sin(uTime + currentBoxNodeData1.w) * 9.5));
284+
}
285+
invTransformMatrix = m * invTransformMatrix; */
286+
287+
}
288+
200289

201290
// transform ray into shape's object space
202291
rObjOrigin = vec3( invTransformMatrix * vec4(rayOrigin, 1.0) );

0 commit comments

Comments
 (0)