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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
| void TestSceneTrace(in vec3 rayPos, in vec3 rayDir, inout SRayHitInfo hitInfo) { vec3 sceneTranslation = vec3(0.0f, 0.0f, 10.0f); vec4 sceneTranslation4 = vec4(sceneTranslation, 0.0f); { vec3 A = vec3(-12.6f, -12.6f, 25.0f) + sceneTranslation; vec3 B = vec3( 12.6f, -12.6f, 25.0f) + sceneTranslation; vec3 C = vec3( 12.6f, 12.6f, 25.0f) + sceneTranslation; vec3 D = vec3(-12.6f, 12.6f, 25.0f) + sceneTranslation; if (TestQuadTrace(rayPos, rayDir, hitInfo, A, B, C, D)) { hitInfo.material.albedo = vec3(0.7f, 0.7f, 0.7f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 0.0f; hitInfo.material.roughness = 0.0f; hitInfo.material.specularColor = vec3(0.0f, 0.0f, 0.0f); } } { vec3 A = vec3(-12.6f, -12.45f, 25.0f) + sceneTranslation; vec3 B = vec3( 12.6f, -12.45f, 25.0f) + sceneTranslation; vec3 C = vec3( 12.6f, -12.45f, 15.0f) + sceneTranslation; vec3 D = vec3(-12.6f, -12.45f, 15.0f) + sceneTranslation; if (TestQuadTrace(rayPos, rayDir, hitInfo, A, B, C, D)) { hitInfo.material.albedo = vec3(0.7f, 0.7f, 0.7f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 0.0f; hitInfo.material.roughness = 0.0f; hitInfo.material.specularColor = vec3(0.0f, 0.0f, 0.0f); } } { vec3 A = vec3(-12.6f, 12.5f, 25.0f) + sceneTranslation; vec3 B = vec3( 12.6f, 12.5f, 25.0f) + sceneTranslation; vec3 C = vec3( 12.6f, 12.5f, 15.0f) + sceneTranslation; vec3 D = vec3(-12.6f, 12.5f, 15.0f) + sceneTranslation; if (TestQuadTrace(rayPos, rayDir, hitInfo, A, B, C, D)) { hitInfo.material.albedo = vec3(0.7f, 0.7f, 0.7f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 0.0f; hitInfo.material.roughness = 0.0f; hitInfo.material.specularColor = vec3(0.0f, 0.0f, 0.0f); } } { vec3 A = vec3(-12.5f, -12.6f, 25.0f) + sceneTranslation; vec3 B = vec3(-12.5f, -12.6f, 15.0f) + sceneTranslation; vec3 C = vec3(-12.5f, 12.6f, 15.0f) + sceneTranslation; vec3 D = vec3(-12.5f, 12.6f, 25.0f) + sceneTranslation; if (TestQuadTrace(rayPos, rayDir, hitInfo, A, B, C, D)) { hitInfo.material.albedo = vec3(0.7f, 0.1f, 0.1f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 0.0f; hitInfo.material.roughness = 0.0f; hitInfo.material.specularColor = vec3(0.0f, 0.0f, 0.0f); } } { vec3 A = vec3( 12.5f, -12.6f, 25.0f) + sceneTranslation; vec3 B = vec3( 12.5f, -12.6f, 15.0f) + sceneTranslation; vec3 C = vec3( 12.5f, 12.6f, 15.0f) + sceneTranslation; vec3 D = vec3( 12.5f, 12.6f, 25.0f) + sceneTranslation; if (TestQuadTrace(rayPos, rayDir, hitInfo, A, B, C, D)) { hitInfo.material.albedo = vec3(0.1f, 0.7f, 0.1f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 0.0f; hitInfo.material.roughness = 0.0f; hitInfo.material.specularColor = vec3(0.0f, 0.0f, 0.0f); } } { vec3 A = vec3(-5.0f, 12.4f, 22.5f) + sceneTranslation; vec3 B = vec3( 5.0f, 12.4f, 22.5f) + sceneTranslation; vec3 C = vec3( 5.0f, 12.4f, 17.5f) + sceneTranslation; vec3 D = vec3(-5.0f, 12.4f, 17.5f) + sceneTranslation; if (TestQuadTrace(rayPos, rayDir, hitInfo, A, B, C, D)) { hitInfo.material.albedo = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.emissive = vec3(1.0f, 0.9f, 0.7f) * 20.0f; hitInfo.material.percentSpecular = 0.0f; hitInfo.material.roughness = 0.0f; hitInfo.material.specularColor = vec3(0.0f, 0.0f, 0.0f); } } if (TestSphereTrace(rayPos, rayDir, hitInfo, vec4(-9.0f, -9.3f, 20.0f, 3.0f)+sceneTranslation4)) { hitInfo.material.albedo = vec3(0.9f, 0.9f, 0.5f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 0.1f; hitInfo.material.roughness = 0.2f; hitInfo.material.specularColor = vec3(0.9f, 0.9f, 0.9f); } if (TestSphereTrace(rayPos, rayDir, hitInfo, vec4(0.0f, -9.3f, 20.0f, 3.0f)+sceneTranslation4)) { hitInfo.material.albedo = vec3(0.9f, 0.5f, 0.9f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 0.3f; hitInfo.material.roughness = 0.2; hitInfo.material.specularColor = vec3(0.9f, 0.9f, 0.9f); } if (TestSphereTrace(rayPos, rayDir, hitInfo, vec4(9.0f, -9.3f, 20.0f, 3.0f)+sceneTranslation4)) { hitInfo.material.albedo = vec3(0.0f, 0.0f, 1.0f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 0.5f; hitInfo.material.roughness = 0.4f; hitInfo.material.specularColor = vec3(1.0f, 0.0f, 0.0f); } { if (TestSphereTrace(rayPos, rayDir, hitInfo, vec4(-10.0f, 0.0f, 23.0f, 1.75f)+sceneTranslation4)) { hitInfo.material.albedo = vec3(1.0f, 1.0f, 1.0f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 1.0f; hitInfo.material.roughness = 0.0f; hitInfo.material.specularColor = vec3(0.3f, 1.0f, 0.3f); } if (TestSphereTrace(rayPos, rayDir, hitInfo, vec4(-5.0f, 0.0f, 23.0f, 1.75f)+sceneTranslation4)) { hitInfo.material.albedo = vec3(1.0f, 1.0f, 1.0f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 1.0f; hitInfo.material.roughness = 0.25f; hitInfo.material.specularColor = vec3(0.3f, 1.0f, 0.3f); } if (TestSphereTrace(rayPos, rayDir, hitInfo, vec4(0.0f, 0.0f, 23.0f, 1.75f)+sceneTranslation4)) { hitInfo.material.albedo = vec3(1.0f, 1.0f, 1.0f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 1.0f; hitInfo.material.roughness = 0.5f; hitInfo.material.specularColor = vec3(0.3f, 1.0f, 0.3f); } if (TestSphereTrace(rayPos, rayDir, hitInfo, vec4(5.0f, 0.0f, 23.0f, 1.75f)+sceneTranslation4)) { hitInfo.material.albedo = vec3(1.0f, 1.0f, 1.0f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 1.0f; hitInfo.material.roughness = 0.75f; hitInfo.material.specularColor = vec3(0.3f, 1.0f, 0.3f); } if (TestSphereTrace(rayPos, rayDir, hitInfo, vec4(10.0f, 0.0f, 23.0f, 1.75f)+sceneTranslation4)) { hitInfo.material.albedo = vec3(1.0f, 1.0f, 1.0f); hitInfo.material.emissive = vec3(0.0f, 0.0f, 0.0f); hitInfo.material.percentSpecular = 1.0f; hitInfo.material.roughness = 1.0f; hitInfo.material.specularColor = vec3(0.3f, 1.0f, 0.3f); } } }
|