67
67
margin-right : 0.75em ;
68
68
}
69
69
70
- canvas {
70
+ # logo- canvas {
71
71
display : block;
72
72
visibility : hidden;
73
73
width : 256px ;
78
78
padding : 0 ;
79
79
border : none;
80
80
}
81
+
82
+ # bg-scene {
83
+ height : 100% ;
84
+ width : 100% ;
85
+ position : absolute;
86
+ left : 0 ;
87
+ top : 0 ;
88
+ }
89
+
90
+ .jumbotron {
91
+ position : relative;
92
+ }
93
+
94
+ @media only screen and (min-width : 768px )
95
+ {
96
+ .navbar-transparent
97
+ {
98
+ background-color : transparent !important ;
99
+ transition : background-color 200ms linear;
100
+ }
101
+ }
81
102
</ style >
82
103
{% endblock %}
83
104
84
105
{% block jumbotron %}
85
- < div class ="jumbotron ">
106
+ < div class ="jumbotron d-flex align-items-center min-vh-100 ">
107
+ < div id ="bg-scene "> </ div >
86
108
< div class ="container ">
87
109
< div class ="row mt-5 ">
88
- < div class ="col-md-6 mt-4 text-center ">
110
+ < div class ="col-md-6 mt-4 pb-5 pb-md-0 text-center ">
89
111
< img src ="xbox_logo.png " class ="img-fluid " width =450 />
90
112
</ div >
91
113
< div class ="col-md-6 ">
92
114
< h1 class ="display-3 ">
93
115
< canvas id ="logo-canvas " class ="gl-logo "> </ canvas >
94
- < img id ="logo-fallback " alt ="xemu logo " src ="/logo-green.svg " style ="height: 1.03em; ">
116
+ < img id ="logo-fallback " alt ="xemu logo " src ="/logo-green-jumbotron .svg " style ="height: 1.03em; ">
95
117
</ h1 >
96
- < h4 class ="card-subtitle mb-2 text-muted "> Original Xbox Emulator</ h4 >
118
+ < h4 class ="card-subtitle mb-2 "> Original Xbox Emulator</ h4 >
97
119
< p >
98
120
A free and open-source application that emulates the original Microsoft
99
121
Xbox game console, enabling people to play their original Xbox games on
@@ -103,21 +125,21 @@ <h4 class="card-subtitle mb-2 text-muted">Original Xbox Emulator</h4>
103
125
< div class ="container pl-2 p-0 ">
104
126
< div class ="row ">
105
127
< div class ="column text-center text-md-left p-2 ">
106
- < a class ="btn btn-secondary btn-lg " role ="button " id ="download-gen " href ="/docs/download ">
128
+ < a class ="btn btn-green btn-lg " role ="button " id ="download-gen " href ="/docs/download ">
107
129
< i class ="fa fa-laptop button-icon " aria-hidden ="true "> </ i > View Download Options
108
130
</ a >
109
- < a class ="btn btn-secondary btn-lg " role ="button " id ="download-win " style ="display: none " href ="https://github.com/mborgerson/xemu/releases/latest/download/xemu-win-release.zip ">
131
+ < a class ="btn btn-green btn-lg " role ="button " id ="download-win " style ="display: none " href ="https://github.com/mborgerson/xemu/releases/latest/download/xemu-win-release.zip ">
110
132
< i class ="fab fa-windows button-icon " aria-hidden ="true "> </ i > Download for Windows
111
133
</ a >
112
- < a class ="btn btn-secondary btn-lg " role ="button " id ="download-mac " style ="display: none " href ="https://github.com/mborgerson/xemu/releases/latest/download/xemu-macos-universal-release.zip ">
134
+ < a class ="btn btn-green btn-lg " role ="button " id ="download-mac " style ="display: none " href ="https://github.com/mborgerson/xemu/releases/latest/download/xemu-macos-universal-release.zip ">
113
135
< i class ="fab fa-apple button-icon " aria-hidden ="true "> </ i > Download for macOS
114
136
</ a >
115
- < a class ="btn btn-secondary btn-lg " role ="button " id ="download-linux " style ="display: none " href ="/docs/download/#download-for-linux ">
137
+ < a class ="btn btn-green btn-lg " role ="button " id ="download-linux " style ="display: none " href ="/docs/download/#download-for-linux ">
116
138
< i class ="fab fa-linux button-icon " aria-hidden ="true "> </ i > Download for Linux
117
139
</ a >
118
140
</ div >
119
141
< div class ="column p-2 ">
120
- < strong > Latest Release :</ strong > v{{xemu_build_version}} ({{xemu_build_date.strftime('%b %-d, %Y')}})
142
+ < strong > Latest release :</ strong > v{{xemu_build_version}} ({{xemu_build_date.strftime('%b %-d, %Y')}})
121
143
< br />
122
144
< a href ="/docs/download " id ="download-options " style ="display: none "> Alternative download options</ a >
123
145
</ div >
@@ -126,18 +148,12 @@ <h4 class="card-subtitle mb-2 text-muted">Original Xbox Emulator</h4>
126
148
127
149
</ div >
128
150
</ div >
151
+
129
152
</ div >
130
- < div class ="scroll "> </ div >
131
153
</ div >
132
154
{% endblock %}
133
155
134
156
{% block content %}
135
- < div class ="embed-responsive embed-responsive-16by9 ">
136
- < iframe class ="embed-responsive-item " src ="https://www.youtube-nocookie.com/embed/?list=PLec5KNGR_nILyzdbQ8OyFpceyrTRUBNNU&autoplay=1&mute=1&modestbranding=1&loop=1 " frameborder ="0 " allow ="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture " allowfullscreen > </ iframe >
137
- </ div >
138
-
139
- < hr >
140
-
141
157
< h2 class ="mb-4 text-center "> Features</ h2 >
142
158
< div class ="row ">
143
159
< div class ="col-md-4 ">
@@ -166,6 +182,10 @@ <h4><i class="fas fa-expand-alt feature-icon"></i> Render Scaling</h4>
166
182
</ div >
167
183
</ div >
168
184
185
+ < hr >
186
+ < div class ="embed-responsive embed-responsive-16by9 ">
187
+ < iframe class ="embed-responsive-item " src ="https://www.youtube-nocookie.com/embed/?list=PLec5KNGR_nILyzdbQ8OyFpceyrTRUBNNU&autoplay=1&mute=1&modestbranding=1&loop=1 " frameborder ="0 " allow ="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture " allowfullscreen > </ iframe >
188
+ </ div >
169
189
< hr >
170
190
171
191
< div class ="" id ="compatibility ">
@@ -201,8 +221,6 @@ <h2 class="mb-4 text-center">Compatibility</h2>
201
221
{% endblock %}
202
222
203
223
{% block append_foot %}
204
- < script type ="text/javascript " src ="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.10/jquery.lazy.min.js "> </ script >
205
- < script type ="text/javascript " src ="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.10/jquery.lazy.plugins.min.js "> </ script >
206
224
< script type ="text/javascript ">
207
225
// Show platform-specific download button
208
226
var platform = undefined ;
@@ -219,7 +237,63 @@ <h2 class="mb-4 text-center">Compatibility</h2>
219
237
$ ( '#download-options' ) . show ( ) ;
220
238
}
221
239
</ script >
240
+
241
+ < script type ="text/javascript " src ="three.min.js "> </ script >
242
+ < script type ="text/javascript ">
243
+ var canvas = document . querySelector ( '#bg-scene' ) ;
244
+ var scene = new THREE . Scene ( ) ;
245
+ var camera = new THREE . PerspectiveCamera ( 50 , canvas . offsetWidth / canvas . offsetHeight , 0.1 , 1000 ) ;
246
+ scene . fog = new THREE . Fog ( 'black' , 0.5 , 2.75 ) ;
247
+ scene . background = new THREE . Color ( 'black' ) ;
248
+
249
+ var renderer = new THREE . WebGLRenderer ( ) ;
250
+ renderer . setSize ( canvas . offsetWidth , canvas . offsetHeight ) ;
251
+ renderer . setPixelRatio ( window . devicePixelRatio ) ;
252
+ canvas . appendChild ( renderer . domElement ) ;
253
+
254
+ const texture = new THREE . TextureLoader ( ) . load ( "mesh_pattern.svg" ) ;
255
+ texture . wrapS = THREE . RepeatWrapping ;
256
+ texture . wrapT = THREE . RepeatWrapping ;
257
+ texture . repeat . set ( 50 , - 25 ) ;
258
+
259
+ const geometry = new THREE . SphereGeometry ( 1 , 50 , 25 ) ;
260
+ var material = new THREE . MeshBasicMaterial ( { map : texture , side : THREE . BackSide } ) ;
261
+ var sphere = new THREE . Mesh ( geometry , material ) ;
262
+ scene . add ( sphere ) ;
263
+ camera . position . z = 1 ;
264
+
265
+ var clock = new THREE . Clock ( ) ;
266
+ var render = function ( ) {
267
+ requestAnimationFrame ( render ) ;
268
+ var delta = clock . getDelta ( ) ;
269
+ sphere . rotation . y += 0.01 * delta ;
270
+ renderer . render ( scene , camera ) ;
271
+ } ;
272
+ render ( ) ;
273
+ window . addEventListener ( 'resize' , function ( ) {
274
+ camera . aspect = canvas . offsetWidth / canvas . offsetHeight ;
275
+ camera . updateProjectionMatrix ( ) ;
276
+ renderer . setSize ( canvas . offsetWidth , canvas . offsetHeight ) ;
277
+ } , false ) ;
278
+ </ script >
279
+ < script type ="text/javascript " src ="gl_logo.js "> </ script >
280
+ < script type ="text/javascript ">
281
+ function updateNavbarTransparency ( ) {
282
+ var nav = $ ( ".navbar" ) ;
283
+ var t = $ ( document ) . scrollTop ( ) < ( $ ( ".jumbotron" ) [ 0 ] . offsetHeight - nav . height ( ) ) ;
284
+ nav . toggleClass ( 'navbar-transparent' , t ) ;
285
+ }
286
+ $ ( document ) . scroll ( updateNavbarTransparency ) ;
287
+ $ ( function ( ) {
288
+ $ ( ".navbar-toggle" ) . click ( updateNavbarTransparency ) ;
289
+ } ) ;
290
+ updateNavbarTransparency ( ) ;
291
+ </ script >
292
+
222
293
< script type ="text/javascript " src ="https://cdn.jsdelivr.net/npm/apexcharts "> </ script >
294
+ < script type ="text/javascript " src ="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.10/jquery.lazy.min.js "> </ script >
295
+ < script type ="text/javascript " src ="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.10/jquery.lazy.plugins.min.js "> </ script >
296
+
223
297
< script type ="text/javascript ">
224
298
// Lazy-load images
225
299
var lazyInstance = $ ( 'img.lazy' ) . Lazy ( {
@@ -383,5 +457,5 @@ <h2 class="mb-4 text-center">Compatibility</h2>
383
457
var chart = new ApexCharts ( document . querySelector ( "#title_stats" ) , options ) ;
384
458
chart . render ( ) ;
385
459
</ script >
386
- < script type =" text/javascript " src =" gl_logo.js " > </ script >
460
+
387
461
{% endblock %}
0 commit comments