添加数据文件,确保拉取后直接编译运行
|
@ -31,8 +31,8 @@
|
|||
*.out
|
||||
*.app
|
||||
|
||||
# gltf model
|
||||
data/
|
||||
# gltf model only for github
|
||||
#data/
|
||||
|
||||
# vs compile file
|
||||
out/
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
# Getting the assets
|
||||
|
||||
Binary assets (models, textures, etc.) are not stored in this repository and need to be downloaded manually.
|
||||
|
||||
## Downloading the assets
|
||||
|
||||
### Option 1: Run the python script
|
||||
|
||||
Run the [download_assets.py](../download_assets.py) python script which will download the asset pack and unpacks it into the appropriate folder.
|
||||
|
||||
### Option 2: Manual download
|
||||
|
||||
Download the asset pack from [https://vulkan.gpuinfo.org/downloads/vulkan_asset_pack_gltf.zip](https://vulkan.gpuinfo.org/downloads/vulkan_asset_pack_gltf.zip) and extract it in the ```data``` directory.
|
|
@ -0,0 +1,14 @@
|
|||
# Vulkan samples asset pack
|
||||
|
||||
This repository contains the assets used by my [Vulkan samples](https://github.com/SaschaWillems/Vulkan) and is used there as a submodule.
|
||||
|
||||
# Licenses and acknowledgments
|
||||
|
||||
- HDR textures from http://gl.ict.usc.edu/Data/HighResProbes/
|
||||
- HDR textures from http://www.hdrlabs.com/sibl/archive.html
|
||||
- Cerberus gun model and textures by Andrew Maximov (http://artisaverb.info/Cerberus.html)
|
||||
- Tree model created using Tree IT from http://www.evolved-software.com
|
||||
- glTF sample models from https://github.com/KhronosGroup/glTF-Sample-Models
|
||||
- Retro UFO models 2016 by Sascha Willems licensed under the CC BY 3.0 license (https://creativecommons.org/licenses/by/3.0/)
|
||||
- Vulkan scene models (and derived work) 2016 by Dominic Agoro-Ombaka and Sascha Willems, do not use and distributed without request
|
||||
- Roboto Medium fonts from [Google Fonts](https://fonts.google.com), under license [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
@ -0,0 +1,4 @@
|
|||
Roboto-Medium.ttf
|
||||
Apache License 2.0
|
||||
by Christian Robertson
|
||||
https://fonts.google.com/specimen/Roboto
|
|
@ -0,0 +1,9 @@
|
|||
Additional environment cube maps put here must be
|
||||
- Stored as Khronos texture format files (.ktx)
|
||||
- Cube maps (with mip maps)
|
||||
- 16 bit HDR RGBA signed float (VK_FORMAT_R16G16B16A16_SFLOAT)
|
||||
|
||||
Converting hdr environment maps can be done with [cmft](https://github.com/dariomanesku/cmft) like this:
|
||||
|
||||
```cmft --input "papermill.hdr" --filter none --outputNum 1 --output0 "papermill_hdr16f_cube" --output0params ktx,rgba16f,cubemap --generateMipChain true --dstFaceSize 512```
|
||||
|
|
@ -0,0 +1,343 @@
|
|||
info face="Arial Black Standard" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=4,4,4,4 spacing=-8,-8
|
||||
common lineHeight=46 base=36 scaleW=512 scaleH=512 pages=1 packed=0
|
||||
page id=0 file="sdf.png"
|
||||
chars count=97
|
||||
char id=0 x=237 y=102 width=25 height=29 xoffset=-4 yoffset=11 xadvance=24 page=0 chnl=0
|
||||
char id=10 x=0 y=0 width=0 height=0 xoffset=-4 yoffset=0 xadvance=0 page=0 chnl=0
|
||||
char id=32 x=0 y=0 width=0 height=0 xoffset=-4 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=33 x=27 y=102 width=15 height=32 xoffset=-4 yoffset=8 xadvance=11 page=0 chnl=0
|
||||
char id=34 x=298 y=134 width=24 height=17 xoffset=-4 yoffset=8 xadvance=16 page=0 chnl=0
|
||||
char id=35 x=154 y=102 width=28 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=36 x=150 y=0 width=28 height=37 xoffset=-4 yoffset=6 xadvance=21 page=0 chnl=0
|
||||
char id=37 x=117 y=102 width=37 height=32 xoffset=-4 yoffset=8 xadvance=32 page=0 chnl=0
|
||||
char id=38 x=182 y=102 width=34 height=32 xoffset=-4 yoffset=8 xadvance=28 page=0 chnl=0
|
||||
char id=39 x=322 y=134 width=15 height=17 xoffset=-4 yoffset=8 xadvance=9 page=0 chnl=0
|
||||
char id=40 x=20 y=0 width=18 height=38 xoffset=-4 yoffset=8 xadvance=12 page=0 chnl=0
|
||||
char id=41 x=38 y=0 width=19 height=38 xoffset=-4 yoffset=8 xadvance=12 page=0 chnl=0
|
||||
char id=42 x=279 y=134 width=19 height=21 xoffset=-4 yoffset=8 xadvance=18 page=0 chnl=0
|
||||
char id=43 x=186 y=134 width=26 height=26 xoffset=-4 yoffset=11 xadvance=21 page=0 chnl=0
|
||||
char id=44 x=264 y=134 width=15 height=21 xoffset=-4 yoffset=25 xadvance=11 page=0 chnl=0
|
||||
char id=45 x=394 y=134 width=18 height=14 xoffset=-4 yoffset=20 xadvance=11 page=0 chnl=0
|
||||
char id=46 x=363 y=134 width=15 height=15 xoffset=-4 yoffset=25 xadvance=11 page=0 chnl=0
|
||||
char id=47 x=83 y=102 width=17 height=32 xoffset=-4 yoffset=8 xadvance=9 page=0 chnl=0
|
||||
char id=48 x=0 y=102 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=49 x=261 y=70 width=22 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=50 x=283 y=70 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=51 x=310 y=70 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=52 x=337 y=70 width=29 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=53 x=366 y=70 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=54 x=393 y=70 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=55 x=420 y=70 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=56 x=447 y=70 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=57 x=474 y=70 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=58 x=171 y=134 width=15 height=26 xoffset=-4 yoffset=14 xadvance=11 page=0 chnl=0
|
||||
char id=59 x=68 y=102 width=15 height=32 xoffset=-4 yoffset=14 xadvance=11 page=0 chnl=0
|
||||
char id=60 x=262 y=102 width=26 height=27 xoffset=-4 yoffset=11 xadvance=21 page=0 chnl=0
|
||||
char id=61 x=238 y=134 width=26 height=22 xoffset=-4 yoffset=13 xadvance=21 page=0 chnl=0
|
||||
char id=62 x=288 y=102 width=26 height=27 xoffset=-4 yoffset=11 xadvance=21 page=0 chnl=0
|
||||
char id=63 x=42 y=102 width=26 height=32 xoffset=-4 yoffset=8 xadvance=20 page=0 chnl=0
|
||||
char id=64 x=178 y=0 width=33 height=35 xoffset=-4 yoffset=8 xadvance=24 page=0 chnl=0
|
||||
char id=65 x=244 y=0 width=33 height=32 xoffset=-4 yoffset=8 xadvance=25 page=0 chnl=0
|
||||
char id=66 x=277 y=0 width=30 height=32 xoffset=-4 yoffset=8 xadvance=25 page=0 chnl=0
|
||||
char id=67 x=307 y=0 width=30 height=32 xoffset=-4 yoffset=8 xadvance=25 page=0 chnl=0
|
||||
char id=68 x=337 y=0 width=30 height=32 xoffset=-4 yoffset=8 xadvance=25 page=0 chnl=0
|
||||
char id=69 x=367 y=0 width=28 height=32 xoffset=-4 yoffset=8 xadvance=23 page=0 chnl=0
|
||||
char id=70 x=395 y=0 width=26 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=71 x=421 y=0 width=33 height=32 xoffset=-4 yoffset=8 xadvance=27 page=0 chnl=0
|
||||
char id=72 x=454 y=0 width=31 height=32 xoffset=-4 yoffset=8 xadvance=27 page=0 chnl=0
|
||||
char id=73 x=485 y=0 width=16 height=32 xoffset=-4 yoffset=8 xadvance=12 page=0 chnl=0
|
||||
char id=74 x=0 y=38 width=26 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=75 x=26 y=38 width=33 height=32 xoffset=-4 yoffset=8 xadvance=27 page=0 chnl=0
|
||||
char id=76 x=59 y=38 width=26 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=77 x=85 y=38 width=34 height=32 xoffset=-4 yoffset=8 xadvance=30 page=0 chnl=0
|
||||
char id=78 x=119 y=38 width=31 height=32 xoffset=-4 yoffset=8 xadvance=27 page=0 chnl=0
|
||||
char id=79 x=150 y=38 width=33 height=32 xoffset=-4 yoffset=8 xadvance=27 page=0 chnl=0
|
||||
char id=80 x=183 y=38 width=27 height=32 xoffset=-4 yoffset=8 xadvance=23 page=0 chnl=0
|
||||
char id=81 x=211 y=0 width=33 height=34 xoffset=-4 yoffset=8 xadvance=27 page=0 chnl=0
|
||||
char id=82 x=210 y=38 width=31 height=32 xoffset=-4 yoffset=8 xadvance=25 page=0 chnl=0
|
||||
char id=83 x=241 y=38 width=30 height=32 xoffset=-4 yoffset=8 xadvance=23 page=0 chnl=0
|
||||
char id=84 x=271 y=38 width=30 height=32 xoffset=-4 yoffset=8 xadvance=23 page=0 chnl=0
|
||||
char id=85 x=301 y=38 width=31 height=32 xoffset=-4 yoffset=8 xadvance=27 page=0 chnl=0
|
||||
char id=86 x=332 y=38 width=33 height=32 xoffset=-4 yoffset=8 xadvance=25 page=0 chnl=0
|
||||
char id=87 x=365 y=38 width=41 height=32 xoffset=-4 yoffset=8 xadvance=32 page=0 chnl=0
|
||||
char id=88 x=406 y=38 width=33 height=32 xoffset=-4 yoffset=8 xadvance=25 page=0 chnl=0
|
||||
char id=89 x=439 y=38 width=33 height=32 xoffset=-4 yoffset=8 xadvance=25 page=0 chnl=0
|
||||
char id=90 x=472 y=38 width=29 height=32 xoffset=-4 yoffset=8 xadvance=23 page=0 chnl=0
|
||||
char id=91 x=57 y=0 width=19 height=38 xoffset=-4 yoffset=8 xadvance=12 page=0 chnl=0
|
||||
char id=92 x=100 y=102 width=17 height=32 xoffset=-4 yoffset=8 xadvance=9 page=0 chnl=0
|
||||
char id=93 x=76 y=0 width=19 height=38 xoffset=-4 yoffset=8 xadvance=12 page=0 chnl=0
|
||||
char id=94 x=212 y=134 width=26 height=22 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=95 x=412 y=134 width=25 height=11 xoffset=-4 yoffset=33 xadvance=16 page=0 chnl=0
|
||||
char id=96 x=378 y=134 width=16 height=14 xoffset=-4 yoffset=8 xadvance=11 page=0 chnl=0
|
||||
char id=97 x=314 y=102 width=26 height=26 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=98 x=0 y=70 width=26 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=99 x=340 y=102 width=26 height=26 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=100 x=26 y=70 width=26 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=101 x=366 y=102 width=27 height=26 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=102 x=52 y=70 width=21 height=32 xoffset=-4 yoffset=8 xadvance=12 page=0 chnl=0
|
||||
char id=103 x=73 y=70 width=26 height=32 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=104 x=99 y=70 width=25 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=105 x=124 y=70 width=15 height=32 xoffset=-4 yoffset=8 xadvance=11 page=0 chnl=0
|
||||
char id=106 x=0 y=0 width=20 height=38 xoffset=-4 yoffset=8 xadvance=11 page=0 chnl=0
|
||||
char id=107 x=139 y=70 width=27 height=32 xoffset=-4 yoffset=8 xadvance=21 page=0 chnl=0
|
||||
char id=108 x=166 y=70 width=15 height=32 xoffset=-4 yoffset=8 xadvance=11 page=0 chnl=0
|
||||
char id=109 x=393 y=102 width=37 height=26 xoffset=-4 yoffset=14 xadvance=32 page=0 chnl=0
|
||||
char id=110 x=430 y=102 width=25 height=26 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=111 x=455 y=102 width=27 height=26 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=112 x=181 y=70 width=26 height=32 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=113 x=207 y=70 width=26 height=32 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=114 x=482 y=102 width=22 height=26 xoffset=-4 yoffset=14 xadvance=14 page=0 chnl=0
|
||||
char id=115 x=0 y=134 width=27 height=26 xoffset=-4 yoffset=14 xadvance=20 page=0 chnl=0
|
||||
char id=116 x=216 y=102 width=21 height=31 xoffset=-4 yoffset=9 xadvance=14 page=0 chnl=0
|
||||
char id=117 x=27 y=134 width=25 height=26 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=118 x=52 y=134 width=27 height=26 xoffset=-4 yoffset=14 xadvance=20 page=0 chnl=0
|
||||
char id=119 x=79 y=134 width=39 height=26 xoffset=-4 yoffset=14 xadvance=30 page=0 chnl=0
|
||||
char id=120 x=118 y=134 width=29 height=26 xoffset=-4 yoffset=14 xadvance=21 page=0 chnl=0
|
||||
char id=121 x=233 y=70 width=28 height=32 xoffset=-4 yoffset=14 xadvance=20 page=0 chnl=0
|
||||
char id=122 x=147 y=134 width=24 height=26 xoffset=-4 yoffset=14 xadvance=18 page=0 chnl=0
|
||||
char id=123 x=95 y=0 width=21 height=38 xoffset=-4 yoffset=8 xadvance=12 page=0 chnl=0
|
||||
char id=124 x=137 y=0 width=13 height=38 xoffset=-4 yoffset=8 xadvance=9 page=0 chnl=0
|
||||
char id=125 x=116 y=0 width=21 height=38 xoffset=-4 yoffset=8 xadvance=12 page=0 chnl=0
|
||||
char id=126 x=337 y=134 width=26 height=17 xoffset=-4 yoffset=15 xadvance=21 page=0 chnl=0
|
||||
kernings count=241
|
||||
kerning first=102 second=101 amount=-1
|
||||
kerning first=76 second=89 amount=-2
|
||||
kerning first=76 second=79 amount=-1
|
||||
kerning first=80 second=65 amount=-3
|
||||
kerning first=102 second=111 amount=-1
|
||||
kerning first=86 second=97 amount=-1
|
||||
kerning first=84 second=114 amount=-1
|
||||
kerning first=119 second=44 amount=-2
|
||||
kerning first=65 second=79 amount=-1
|
||||
kerning first=86 second=67 amount=-1
|
||||
kerning first=66 second=44 amount=1
|
||||
kerning first=84 second=45 amount=-2
|
||||
kerning first=80 second=46 amount=-6
|
||||
kerning first=65 second=89 amount=-3
|
||||
kerning first=67 second=46 amount=1
|
||||
kerning first=112 second=119 amount=-1
|
||||
kerning first=84 second=67 amount=-1
|
||||
kerning first=84 second=58 amount=-1
|
||||
kerning first=84 second=59 amount=-1
|
||||
kerning first=114 second=113 amount=1
|
||||
kerning first=102 second=63 amount=3
|
||||
kerning first=80 second=111 amount=-1
|
||||
kerning first=86 second=114 amount=-1
|
||||
kerning first=89 second=67 amount=-2
|
||||
kerning first=114 second=111 amount=1
|
||||
kerning first=88 second=71 amount=-1
|
||||
kerning first=80 second=101 amount=-1
|
||||
kerning first=87 second=46 amount=-2
|
||||
kerning first=75 second=117 amount=-1
|
||||
kerning first=114 second=100 amount=1
|
||||
kerning first=86 second=117 amount=-1
|
||||
kerning first=87 second=79 amount=-1
|
||||
kerning first=86 second=79 amount=-1
|
||||
kerning first=81 second=86 amount=-1
|
||||
kerning first=82 second=81 amount=-1
|
||||
kerning first=115 second=119 amount=-1
|
||||
kerning first=65 second=85 amount=-1
|
||||
kerning first=68 second=87 amount=1
|
||||
kerning first=112 second=46 amount=-1
|
||||
kerning first=81 second=89 amount=-2
|
||||
kerning first=114 second=97 amount=1
|
||||
kerning first=84 second=97 amount=-2
|
||||
kerning first=65 second=86 amount=-2
|
||||
kerning first=84 second=99 amount=-2
|
||||
kerning first=89 second=100 amount=-3
|
||||
kerning first=102 second=102 amount=1
|
||||
kerning first=114 second=103 amount=1
|
||||
kerning first=87 second=104 amount=1
|
||||
kerning first=86 second=105 amount=1
|
||||
kerning first=114 second=106 amount=1
|
||||
kerning first=74 second=111 amount=-1
|
||||
kerning first=99 second=108 amount=-1
|
||||
kerning first=84 second=109 amount=-1
|
||||
kerning first=114 second=110 amount=2
|
||||
kerning first=118 second=111 amount=-1
|
||||
kerning first=89 second=112 amount=-2
|
||||
kerning first=70 second=114 amount=-1
|
||||
kerning first=97 second=116 amount=-1
|
||||
kerning first=89 second=117 amount=-2
|
||||
kerning first=76 second=119 amount=-1
|
||||
kerning first=101 second=120 amount=-1
|
||||
kerning first=99 second=121 amount=-1
|
||||
kerning first=82 second=119 amount=1
|
||||
kerning first=66 second=65 amount=-1
|
||||
kerning first=81 second=84 amount=-1
|
||||
kerning first=80 second=44 amount=-6
|
||||
kerning first=97 second=103 amount=1
|
||||
kerning first=111 second=120 amount=-1
|
||||
kerning first=65 second=112 amount=1
|
||||
kerning first=84 second=46 amount=-5
|
||||
kerning first=86 second=101 amount=-2
|
||||
kerning first=119 second=104 amount=1
|
||||
kerning first=114 second=117 amount=1
|
||||
kerning first=121 second=44 amount=-3
|
||||
kerning first=121 second=46 amount=-3
|
||||
kerning first=89 second=97 amount=-3
|
||||
kerning first=75 second=101 amount=-1
|
||||
kerning first=65 second=118 amount=-1
|
||||
kerning first=70 second=97 amount=-1
|
||||
kerning first=119 second=113 amount=-1
|
||||
kerning first=75 second=111 amount=-1
|
||||
kerning first=75 second=71 amount=-1
|
||||
kerning first=87 second=97 amount=-1
|
||||
kerning first=101 second=103 amount=1
|
||||
kerning first=87 second=105 amount=1
|
||||
kerning first=81 second=46 amount=1
|
||||
kerning first=86 second=71 amount=-1
|
||||
kerning first=67 second=44 amount=1
|
||||
kerning first=114 second=99 amount=1
|
||||
kerning first=70 second=44 amount=-5
|
||||
kerning first=66 second=85 amount=-1
|
||||
kerning first=76 second=86 amount=-2
|
||||
kerning first=89 second=59 amount=-2
|
||||
kerning first=84 second=44 amount=-5
|
||||
kerning first=120 second=101 amount=-1
|
||||
kerning first=108 second=121 amount=1
|
||||
kerning first=89 second=101 amount=-3
|
||||
kerning first=114 second=46 amount=-2
|
||||
kerning first=121 second=99 amount=-1
|
||||
kerning first=114 second=101 amount=1
|
||||
kerning first=101 second=118 amount=-1
|
||||
kerning first=81 second=44 amount=1
|
||||
kerning first=74 second=121 amount=-1
|
||||
kerning first=82 second=79 amount=-1
|
||||
kerning first=89 second=113 amount=-3
|
||||
kerning first=119 second=46 amount=-3
|
||||
kerning first=68 second=89 amount=-1
|
||||
kerning first=119 second=111 amount=-1
|
||||
kerning first=102 second=46 amount=-2
|
||||
kerning first=86 second=44 amount=-4
|
||||
kerning first=114 second=109 amount=2
|
||||
kerning first=79 second=89 amount=-2
|
||||
kerning first=86 second=65 amount=-2
|
||||
kerning first=103 second=114 amount=1
|
||||
kerning first=102 second=33 amount=3
|
||||
kerning first=84 second=122 amount=-1
|
||||
kerning first=86 second=46 amount=-4
|
||||
kerning first=70 second=101 amount=-1
|
||||
kerning first=99 second=104 amount=-1
|
||||
kerning first=89 second=44 amount=-5
|
||||
kerning first=68 second=86 amount=-1
|
||||
kerning first=88 second=79 amount=-1
|
||||
kerning first=82 second=89 amount=-1
|
||||
kerning first=75 second=67 amount=-1
|
||||
kerning first=98 second=118 amount=-1
|
||||
kerning first=89 second=65 amount=-3
|
||||
kerning first=114 second=107 amount=1
|
||||
kerning first=84 second=101 amount=-2
|
||||
kerning first=89 second=79 amount=-2
|
||||
kerning first=114 second=118 amount=2
|
||||
kerning first=84 second=111 amount=-2
|
||||
kerning first=120 second=111 amount=-1
|
||||
kerning first=82 second=111 amount=-1
|
||||
kerning first=79 second=87 amount=-1
|
||||
kerning first=84 second=71 amount=-1
|
||||
kerning first=118 second=100 amount=-1
|
||||
kerning first=74 second=97 amount=-1
|
||||
kerning first=89 second=45 amount=-3
|
||||
kerning first=84 second=81 amount=-1
|
||||
kerning first=114 second=115 amount=1
|
||||
kerning first=68 second=46 amount=-1
|
||||
kerning first=79 second=44 amount=-1
|
||||
kerning first=121 second=100 amount=-1
|
||||
kerning first=114 second=112 amount=1
|
||||
kerning first=87 second=71 amount=-1
|
||||
kerning first=89 second=83 amount=-1
|
||||
kerning first=86 second=111 amount=-2
|
||||
kerning first=87 second=111 amount=-1
|
||||
kerning first=70 second=46 amount=-5
|
||||
kerning first=81 second=65 amount=1
|
||||
kerning first=114 second=58 amount=1
|
||||
kerning first=84 second=104 amount=1
|
||||
kerning first=114 second=116 amount=2
|
||||
kerning first=87 second=101 amount=-1
|
||||
kerning first=65 second=67 amount=-1
|
||||
kerning first=70 second=65 amount=-3
|
||||
kerning first=65 second=81 amount=-1
|
||||
kerning first=118 second=46 amount=-3
|
||||
kerning first=103 second=121 amount=1
|
||||
kerning first=87 second=67 amount=-1
|
||||
kerning first=74 second=46 amount=-1
|
||||
kerning first=76 second=67 amount=-1
|
||||
kerning first=75 second=79 amount=-1
|
||||
kerning first=87 second=44 amount=-1
|
||||
kerning first=89 second=58 amount=-2
|
||||
kerning first=86 second=59 amount=-1
|
||||
kerning first=114 second=121 amount=2
|
||||
kerning first=121 second=97 amount=-1
|
||||
kerning first=76 second=87 amount=-1
|
||||
kerning first=118 second=44 amount=-3
|
||||
kerning first=79 second=84 amount=-1
|
||||
kerning first=111 second=119 amount=-1
|
||||
kerning first=111 second=118 amount=-1
|
||||
kerning first=84 second=108 amount=1
|
||||
kerning first=82 second=117 amount=-1
|
||||
kerning first=89 second=46 amount=-5
|
||||
kerning first=111 second=122 amount=1
|
||||
kerning first=84 second=65 amount=-2
|
||||
kerning first=74 second=117 amount=-1
|
||||
kerning first=107 second=111 amount=-1
|
||||
kerning first=85 second=65 amount=-1
|
||||
kerning first=111 second=121 amount=-1
|
||||
kerning first=114 second=59 amount=1
|
||||
kerning first=65 second=84 amount=-2
|
||||
kerning first=89 second=118 amount=-1
|
||||
kerning first=86 second=58 amount=-1
|
||||
kerning first=87 second=100 amount=-1
|
||||
kerning first=76 second=84 amount=-2
|
||||
kerning first=102 second=32 amount=2
|
||||
kerning first=111 second=46 amount=-1
|
||||
kerning first=114 second=114 amount=1
|
||||
kerning first=82 second=86 amount=-1
|
||||
kerning first=74 second=44 amount=-1
|
||||
kerning first=118 second=99 amount=-1
|
||||
kerning first=86 second=81 amount=-1
|
||||
kerning first=79 second=88 amount=-2
|
||||
kerning first=85 second=44 amount=-1
|
||||
kerning first=118 second=101 amount=-1
|
||||
kerning first=88 second=67 amount=-1
|
||||
kerning first=79 second=86 amount=-1
|
||||
kerning first=75 second=118 amount=-1
|
||||
kerning first=76 second=85 amount=-1
|
||||
kerning first=107 second=101 amount=-1
|
||||
kerning first=84 second=117 amount=-1
|
||||
kerning first=120 second=99 amount=-1
|
||||
kerning first=75 second=121 amount=-1
|
||||
kerning first=84 second=115 amount=-2
|
||||
kerning first=114 second=44 amount=-2
|
||||
kerning first=82 second=71 amount=-1
|
||||
kerning first=85 second=46 amount=-1
|
||||
kerning first=70 second=111 amount=-1
|
||||
kerning first=97 second=118 amount=-1
|
||||
kerning first=121 second=111 amount=-1
|
||||
kerning first=79 second=65 amount=-1
|
||||
kerning first=82 second=101 amount=-1
|
||||
kerning first=65 second=71 amount=-1
|
||||
kerning first=102 second=44 amount=-2
|
||||
kerning first=112 second=121 amount=-1
|
||||
kerning first=74 second=101 amount=-1
|
||||
kerning first=86 second=45 amount=-1
|
||||
kerning first=121 second=101 amount=-1
|
||||
kerning first=84 second=79 amount=-1
|
||||
kerning first=89 second=111 amount=-3
|
||||
kerning first=118 second=113 amount=-1
|
||||
kerning first=74 second=65 amount=-1
|
||||
kerning first=76 second=71 amount=-1
|
||||
kerning first=79 second=46 amount=-1
|
||||
kerning first=68 second=65 amount=-1
|
||||
kerning first=114 second=108 amount=1
|
||||
kerning first=71 second=44 amount=1
|
||||
kerning first=110 second=118 amount=-1
|
||||
kerning first=82 second=85 amount=-1
|
||||
kerning first=87 second=117 amount=-1
|
||||
kerning first=120 second=100 amount=-1
|
||||
kerning first=80 second=97 amount=-1
|
||||
kerning first=99 second=107 amount=-1
|
||||
kerning first=66 second=46 amount=1
|
||||
kerning first=89 second=71 amount=-2
|
||||
kerning first=107 second=121 amount=1
|
||||
kerning first=82 second=67 amount=-1
|
||||
kerning first=84 second=121 amount=-1
|
|
@ -0,0 +1,10 @@
|
|||
# Cesium Man
|
||||
## Screenshot
|
||||
|
||||

|
||||
|
||||
## License Information
|
||||
|
||||
Donated by Cesium for glTF testing. Please follow the [Cesium Trademark Terms and Conditions](https://github.com/AnalyticalGraphicsInc/cesium/wiki/CesiumTrademark.pdf).
|
||||
|
||||
This model is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).
|
After Width: | Height: | Size: 247 KiB |
After Width: | Height: | Size: 205 KiB |
After Width: | Height: | Size: 453 KiB |
|
@ -0,0 +1,15 @@
|
|||
# Damaged Helmet
|
||||
|
||||
## Screenshot
|
||||
|
||||

|
||||
|
||||
## License Information
|
||||
|
||||
Battle Damaged Sci-fi Helmet - PBR by [theblueturtle_](https://sketchfab.com/theblueturtle_), published under a Creative Commons Attribution-NonCommercial license
|
||||
|
||||
https://sketchfab.com/models/b81008d513954189a063ff901f7abfe4
|
||||
|
||||
## Modifications
|
||||
|
||||
The original model was built on an early draft of glTF 2.0 that did not become final. This new model has been imported and re-exported from Blender to bring it into alignment with the final release glTF 2.0 specification.
|
After Width: | Height: | Size: 319 KiB |
|
@ -0,0 +1,12 @@
|
|||
# Flight Helmet
|
||||
|
||||
## Screenshot
|
||||
|
||||

|
||||
|
||||
## License Information
|
||||
|
||||
Donated by Microsoft for glTF testing
|
||||
|
||||
[](http://creativecommons.org/publicdomain/zero/1.0/)
|
||||
To the extent possible under law, Microsoft has waived all copyright and related or neighboring rights to this asset.
|
|
@ -0,0 +1,660 @@
|
|||
{
|
||||
"accessors": [
|
||||
{
|
||||
"bufferView": 0,
|
||||
"componentType": 5126,
|
||||
"count": 7165,
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 1,
|
||||
"componentType": 5126,
|
||||
"count": 7165,
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 2,
|
||||
"componentType": 5126,
|
||||
"count": 7165,
|
||||
"type": "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView": 3,
|
||||
"componentType": 5126,
|
||||
"count": 7165,
|
||||
"type": "VEC3",
|
||||
"max": [
|
||||
0.131662,
|
||||
0.137638986,
|
||||
0.10078799
|
||||
],
|
||||
"min": [
|
||||
-0.131333,
|
||||
-0.028128,
|
||||
-0.137763992
|
||||
]
|
||||
},
|
||||
{
|
||||
"bufferView": 4,
|
||||
"componentType": 5123,
|
||||
"count": 24408,
|
||||
"type": "SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView": 5,
|
||||
"componentType": 5126,
|
||||
"count": 12552,
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 6,
|
||||
"componentType": 5126,
|
||||
"count": 12552,
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 7,
|
||||
"componentType": 5126,
|
||||
"count": 12552,
|
||||
"type": "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView": 8,
|
||||
"componentType": 5126,
|
||||
"count": 12552,
|
||||
"type": "VEC3",
|
||||
"max": [
|
||||
0.11722149,
|
||||
0.196387976,
|
||||
0.132422984
|
||||
],
|
||||
"min": [
|
||||
-0.11722149,
|
||||
-0.196387976,
|
||||
-0.132422984
|
||||
]
|
||||
},
|
||||
{
|
||||
"bufferView": 9,
|
||||
"componentType": 5123,
|
||||
"count": 65688,
|
||||
"type": "SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView": 10,
|
||||
"componentType": 5126,
|
||||
"count": 436,
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 11,
|
||||
"componentType": 5126,
|
||||
"count": 436,
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 12,
|
||||
"componentType": 5126,
|
||||
"count": 436,
|
||||
"type": "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView": 13,
|
||||
"componentType": 5126,
|
||||
"count": 436,
|
||||
"type": "VEC3",
|
||||
"max": [
|
||||
0.09527509,
|
||||
0.114654,
|
||||
-0.08429489
|
||||
],
|
||||
"min": [
|
||||
-0.0952748954,
|
||||
0.0551489964,
|
||||
-0.14295499
|
||||
]
|
||||
},
|
||||
{
|
||||
"bufferView": 14,
|
||||
"componentType": 5123,
|
||||
"count": 2208,
|
||||
"type": "SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView": 15,
|
||||
"componentType": 5126,
|
||||
"count": 16077,
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 16,
|
||||
"componentType": 5126,
|
||||
"count": 16077,
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 17,
|
||||
"componentType": 5126,
|
||||
"count": 16077,
|
||||
"type": "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView": 18,
|
||||
"componentType": 5126,
|
||||
"count": 16077,
|
||||
"type": "VEC3",
|
||||
"max": [
|
||||
0.1572095,
|
||||
0.2716865,
|
||||
0.162181988
|
||||
],
|
||||
"min": [
|
||||
-0.1572095,
|
||||
-0.2716865,
|
||||
-0.162181988
|
||||
]
|
||||
},
|
||||
{
|
||||
"bufferView": 19,
|
||||
"componentType": 5123,
|
||||
"count": 60288,
|
||||
"type": "SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView": 20,
|
||||
"componentType": 5126,
|
||||
"count": 24136,
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 21,
|
||||
"componentType": 5126,
|
||||
"count": 24136,
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 22,
|
||||
"componentType": 5126,
|
||||
"count": 24136,
|
||||
"type": "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView": 23,
|
||||
"componentType": 5126,
|
||||
"count": 24136,
|
||||
"type": "VEC3",
|
||||
"max": [
|
||||
0.1504075,
|
||||
0.328366965,
|
||||
0.173673
|
||||
],
|
||||
"min": [
|
||||
-0.1504075,
|
||||
-0.328366965,
|
||||
-0.173673
|
||||
]
|
||||
},
|
||||
{
|
||||
"bufferView": 24,
|
||||
"componentType": 5123,
|
||||
"count": 131574,
|
||||
"type": "SCALAR"
|
||||
}
|
||||
],
|
||||
"asset": {
|
||||
"generator": "glTF Tools for Unity",
|
||||
"version": "2.0"
|
||||
},
|
||||
"bufferViews": [
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteLength": 57320
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 57320,
|
||||
"byteLength": 85980
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 143300,
|
||||
"byteLength": 114640
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 257940,
|
||||
"byteLength": 85980
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 343920,
|
||||
"byteLength": 48816
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 392736,
|
||||
"byteLength": 100416
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 493152,
|
||||
"byteLength": 150624
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 643776,
|
||||
"byteLength": 200832
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 844608,
|
||||
"byteLength": 150624
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 995232,
|
||||
"byteLength": 131376
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1126608,
|
||||
"byteLength": 3488
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1130096,
|
||||
"byteLength": 5232
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1135328,
|
||||
"byteLength": 6976
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1142304,
|
||||
"byteLength": 5232
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1147536,
|
||||
"byteLength": 4416
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1151952,
|
||||
"byteLength": 128616
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1280568,
|
||||
"byteLength": 192924
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1473492,
|
||||
"byteLength": 257232
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1730724,
|
||||
"byteLength": 192924
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1923648,
|
||||
"byteLength": 120576
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 2044224,
|
||||
"byteLength": 193088
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 2237312,
|
||||
"byteLength": 289632
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 2526944,
|
||||
"byteLength": 386176
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 2913120,
|
||||
"byteLength": 289632
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 3202752,
|
||||
"byteLength": 263148
|
||||
}
|
||||
],
|
||||
"buffers": [
|
||||
{
|
||||
"uri": "FlightHelmet.bin",
|
||||
"byteLength": 3465900
|
||||
}
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"uri": "FlightHelmet_baseColor.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_occlusionRoughnessMetallic.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_normal.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_baseColor1.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_occlusionRoughnessMetallic1.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_normal1.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_baseColor2.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_occlusionRoughnessMetallic2.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_normal2.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_baseColor3.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_occlusionRoughnessMetallic3.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_normal3.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_baseColor4.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_occlusionRoughnessMetallic4.png"
|
||||
},
|
||||
{
|
||||
"uri": "FlightHelmet_normal4.png"
|
||||
}
|
||||
],
|
||||
"meshes": [
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"TEXCOORD_0": 0,
|
||||
"NORMAL": 1,
|
||||
"TANGENT": 2,
|
||||
"POSITION": 3
|
||||
},
|
||||
"indices": 4,
|
||||
"material": 0
|
||||
}
|
||||
],
|
||||
"name": "GlassPlastic_low"
|
||||
},
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"TEXCOORD_0": 5,
|
||||
"NORMAL": 6,
|
||||
"TANGENT": 7,
|
||||
"POSITION": 8
|
||||
},
|
||||
"indices": 9,
|
||||
"material": 1
|
||||
}
|
||||
],
|
||||
"name": "LeatherParts_low"
|
||||
},
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"TEXCOORD_0": 10,
|
||||
"NORMAL": 11,
|
||||
"TANGENT": 12,
|
||||
"POSITION": 13
|
||||
},
|
||||
"indices": 14,
|
||||
"material": 2
|
||||
}
|
||||
],
|
||||
"name": "Lenses_low"
|
||||
},
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"TEXCOORD_0": 15,
|
||||
"NORMAL": 16,
|
||||
"TANGENT": 17,
|
||||
"POSITION": 18
|
||||
},
|
||||
"indices": 19,
|
||||
"material": 3
|
||||
}
|
||||
],
|
||||
"name": "MetalParts_low"
|
||||
},
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"TEXCOORD_0": 20,
|
||||
"NORMAL": 21,
|
||||
"TANGENT": 22,
|
||||
"POSITION": 23
|
||||
},
|
||||
"indices": 24,
|
||||
"material": 4
|
||||
}
|
||||
],
|
||||
"name": "RubberWood_low"
|
||||
}
|
||||
],
|
||||
"materials": [
|
||||
{
|
||||
"pbrMetallicRoughness": {
|
||||
"baseColorTexture": {
|
||||
"index": 0
|
||||
},
|
||||
"metallicRoughnessTexture": {
|
||||
"index": 1
|
||||
}
|
||||
},
|
||||
"normalTexture": {
|
||||
"index": 2
|
||||
},
|
||||
"occlusionTexture": {
|
||||
"index": 1
|
||||
},
|
||||
"name": "GlassPlasticMat"
|
||||
},
|
||||
{
|
||||
"pbrMetallicRoughness": {
|
||||
"baseColorTexture": {
|
||||
"index": 3
|
||||
},
|
||||
"metallicRoughnessTexture": {
|
||||
"index": 4
|
||||
}
|
||||
},
|
||||
"normalTexture": {
|
||||
"index": 5
|
||||
},
|
||||
"occlusionTexture": {
|
||||
"index": 4
|
||||
},
|
||||
"name": "LeatherPartsMat"
|
||||
},
|
||||
{
|
||||
"pbrMetallicRoughness": {
|
||||
"baseColorTexture": {
|
||||
"index": 6
|
||||
},
|
||||
"metallicRoughnessTexture": {
|
||||
"index": 7
|
||||
}
|
||||
},
|
||||
"normalTexture": {
|
||||
"index": 8
|
||||
},
|
||||
"occlusionTexture": {
|
||||
"index": 7
|
||||
},
|
||||
"alphaMode": "BLEND",
|
||||
"name": "LensesMat"
|
||||
},
|
||||
{
|
||||
"pbrMetallicRoughness": {
|
||||
"baseColorTexture": {
|
||||
"index": 9
|
||||
},
|
||||
"metallicRoughnessTexture": {
|
||||
"index": 10
|
||||
}
|
||||
},
|
||||
"normalTexture": {
|
||||
"index": 11
|
||||
},
|
||||
"occlusionTexture": {
|
||||
"index": 10
|
||||
},
|
||||
"name": "MetalPartsMat"
|
||||
},
|
||||
{
|
||||
"pbrMetallicRoughness": {
|
||||
"baseColorTexture": {
|
||||
"index": 12
|
||||
},
|
||||
"metallicRoughnessTexture": {
|
||||
"index": 13
|
||||
}
|
||||
},
|
||||
"normalTexture": {
|
||||
"index": 14
|
||||
},
|
||||
"occlusionTexture": {
|
||||
"index": 13
|
||||
},
|
||||
"name": "RubberWoodMat"
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"mesh": 0,
|
||||
"name": "GlassPlastic_low"
|
||||
},
|
||||
{
|
||||
"mesh": 1,
|
||||
"translation": [
|
||||
0.000434499962,
|
||||
0.032592997,
|
||||
0.011676996
|
||||
],
|
||||
"name": "LeatherParts_low"
|
||||
},
|
||||
{
|
||||
"mesh": 2,
|
||||
"name": "Lenses_low"
|
||||
},
|
||||
{
|
||||
"mesh": 3,
|
||||
"translation": [
|
||||
0.0331545,
|
||||
-0.1488645,
|
||||
-0.0242879968
|
||||
],
|
||||
"name": "MetalParts_low"
|
||||
},
|
||||
{
|
||||
"mesh": 4,
|
||||
"translation": [
|
||||
-0.00190849893,
|
||||
-0.111985,
|
||||
-0.013313001
|
||||
],
|
||||
"name": "RubberWood_low"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4
|
||||
],
|
||||
"rotation": [
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"name": "FlightHelmet"
|
||||
}
|
||||
],
|
||||
"scene": 0,
|
||||
"scenes": [
|
||||
{
|
||||
"nodes": [
|
||||
5
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures": [
|
||||
{
|
||||
"source": 0
|
||||
},
|
||||
{
|
||||
"source": 1
|
||||
},
|
||||
{
|
||||
"source": 2
|
||||
},
|
||||
{
|
||||
"source": 3
|
||||
},
|
||||
{
|
||||
"source": 4
|
||||
},
|
||||
{
|
||||
"source": 5
|
||||
},
|
||||
{
|
||||
"source": 6
|
||||
},
|
||||
{
|
||||
"source": 7
|
||||
},
|
||||
{
|
||||
"source": 8
|
||||
},
|
||||
{
|
||||
"source": 9
|
||||
},
|
||||
{
|
||||
"source": 10
|
||||
},
|
||||
{
|
||||
"source": 11
|
||||
},
|
||||
{
|
||||
"source": 12
|
||||
},
|
||||
{
|
||||
"source": 13
|
||||
},
|
||||
{
|
||||
"source": 14
|
||||
}
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 2.6 MiB |
After Width: | Height: | Size: 5.1 MiB |
After Width: | Height: | Size: 806 KiB |
After Width: | Height: | Size: 2.9 MiB |
After Width: | Height: | Size: 3.8 MiB |
After Width: | Height: | Size: 3.0 MiB |
After Width: | Height: | Size: 5.4 MiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 3.5 MiB |
After Width: | Height: | Size: 3.5 MiB |
After Width: | Height: | Size: 4.4 MiB |
After Width: | Height: | Size: 5.1 MiB |
After Width: | Height: | Size: 737 KiB |
After Width: | Height: | Size: 3.6 MiB |
After Width: | Height: | Size: 4.3 MiB |
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,3 @@
|
|||
Model by piacenti (http://opengameart.org/content/knight-2)
|
||||
|
||||
Licensed under CC-BY 3.0
|
After Width: | Height: | Size: 471 KiB |
After Width: | Height: | Size: 866 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 773 KiB |
After Width: | Height: | Size: 934 KiB |
After Width: | Height: | Size: 188 KiB |
After Width: | Height: | Size: 531 KiB |
After Width: | Height: | Size: 440 KiB |
After Width: | Height: | Size: 583 KiB |
After Width: | Height: | Size: 687 KiB |
After Width: | Height: | Size: 843 KiB |
After Width: | Height: | Size: 394 KiB |
|
@ -0,0 +1,5 @@
|
|||
Buster Drone by LaVADraGoN, published under a [Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)](https://creativecommons.org/licenses/by-nc/4.0/) license
|
||||
|
||||
https://sketchfab.com/models/294e79652f494130ad2ab00a13fdbafd
|
||||
|
||||
https://sketchfab.com/lavadragon
|
After Width: | Height: | Size: 2.4 MiB |
|
@ -0,0 +1,15 @@
|
|||
#version 450
|
||||
|
||||
layout (location = 0) in vec3 inPos;
|
||||
|
||||
layout(push_constant) uniform PushConsts {
|
||||
layout (offset = 0) mat4 mvp;
|
||||
} pushConsts;
|
||||
|
||||
layout (location = 0) out vec3 outUVW;
|
||||
|
||||
void main()
|
||||
{
|
||||
outUVW = inPos;
|
||||
gl_Position = pushConsts.mvp * vec4(inPos.xyz, 1.0);
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
#version 450
|
||||
|
||||
layout (location = 0) in vec2 inUV;
|
||||
layout (location = 0) out vec4 outColor;
|
||||
layout (constant_id = 0) const uint NUM_SAMPLES = 1024u;
|
||||
|
||||
const float PI = 3.1415926536;
|
||||
|
||||
// Based omn http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/
|
||||
float random(vec2 co)
|
||||
{
|
||||
float a = 12.9898;
|
||||
float b = 78.233;
|
||||
float c = 43758.5453;
|
||||
float dt= dot(co.xy ,vec2(a,b));
|
||||
float sn= mod(dt,3.14);
|
||||
return fract(sin(sn) * c);
|
||||
}
|
||||
|
||||
vec2 hammersley2d(uint i, uint N)
|
||||
{
|
||||
// Radical inverse based on http://holger.dammertz.org/stuff/notes_HammersleyOnHemisphere.html
|
||||
uint bits = (i << 16u) | (i >> 16u);
|
||||
bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
|
||||
bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
|
||||
bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
|
||||
bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
|
||||
float rdi = float(bits) * 2.3283064365386963e-10;
|
||||
return vec2(float(i) /float(N), rdi);
|
||||
}
|
||||
|
||||
// Based on http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_slides.pdf
|
||||
vec3 importanceSample_GGX(vec2 Xi, float roughness, vec3 normal)
|
||||
{
|
||||
// Maps a 2D point to a hemisphere with spread based on roughness
|
||||
float alpha = roughness * roughness;
|
||||
float phi = 2.0 * PI * Xi.x + random(normal.xz) * 0.1;
|
||||
float cosTheta = sqrt((1.0 - Xi.y) / (1.0 + (alpha*alpha - 1.0) * Xi.y));
|
||||
float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
|
||||
vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta);
|
||||
|
||||
// Tangent space
|
||||
vec3 up = abs(normal.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
|
||||
vec3 tangentX = normalize(cross(up, normal));
|
||||
vec3 tangentY = normalize(cross(normal, tangentX));
|
||||
|
||||
// Convert to world Space
|
||||
return normalize(tangentX * H.x + tangentY * H.y + normal * H.z);
|
||||
}
|
||||
|
||||
// Geometric Shadowing function
|
||||
float G_SchlicksmithGGX(float dotNL, float dotNV, float roughness)
|
||||
{
|
||||
float k = (roughness * roughness) / 2.0;
|
||||
float GL = dotNL / (dotNL * (1.0 - k) + k);
|
||||
float GV = dotNV / (dotNV * (1.0 - k) + k);
|
||||
return GL * GV;
|
||||
}
|
||||
|
||||
vec2 BRDF(float NoV, float roughness)
|
||||
{
|
||||
// Normal always points along z-axis for the 2D lookup
|
||||
const vec3 N = vec3(0.0, 0.0, 1.0);
|
||||
vec3 V = vec3(sqrt(1.0 - NoV*NoV), 0.0, NoV);
|
||||
|
||||
vec2 LUT = vec2(0.0);
|
||||
for(uint i = 0u; i < NUM_SAMPLES; i++) {
|
||||
vec2 Xi = hammersley2d(i, NUM_SAMPLES);
|
||||
vec3 H = importanceSample_GGX(Xi, roughness, N);
|
||||
vec3 L = 2.0 * dot(V, H) * H - V;
|
||||
|
||||
float dotNL = max(dot(N, L), 0.0);
|
||||
float dotNV = max(dot(N, V), 0.0);
|
||||
float dotVH = max(dot(V, H), 0.0);
|
||||
float dotNH = max(dot(H, N), 0.0);
|
||||
|
||||
if (dotNL > 0.0) {
|
||||
float G = G_SchlicksmithGGX(dotNL, dotNV, roughness);
|
||||
float G_Vis = (G * dotVH) / (dotNH * dotNV);
|
||||
float Fc = pow(1.0 - dotVH, 5.0);
|
||||
LUT += vec2((1.0 - Fc) * G_Vis, Fc * G_Vis);
|
||||
}
|
||||
}
|
||||
return LUT / float(NUM_SAMPLES);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
outColor = vec4(BRDF(inUV.s, inUV.t), 0.0, 1.0);
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
#version 450
|
||||
|
||||
layout (location = 0) out vec2 outUV;
|
||||
|
||||
void main()
|
||||
{
|
||||
outUV = vec2((gl_VertexIndex << 1) & 2, gl_VertexIndex & 2);
|
||||
gl_Position = vec4(outUV * 2.0f - 1.0f, 0.0f, 1.0f);
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
// Generates an irradiance cube from an environment map using convolution
|
||||
|
||||
#version 450
|
||||
|
||||
layout (location = 0) in vec3 inPos;
|
||||
layout (location = 0) out vec4 outColor;
|
||||
layout (binding = 0) uniform samplerCube samplerEnv;
|
||||
|
||||
layout(push_constant) uniform PushConsts {
|
||||
layout (offset = 64) float deltaPhi;
|
||||
layout (offset = 68) float deltaTheta;
|
||||
} consts;
|
||||
|
||||
#define PI 3.1415926535897932384626433832795
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 N = normalize(inPos);
|
||||
vec3 up = vec3(0.0, 1.0, 0.0);
|
||||
vec3 right = normalize(cross(up, N));
|
||||
up = cross(N, right);
|
||||
|
||||
const float TWO_PI = PI * 2.0;
|
||||
const float HALF_PI = PI * 0.5;
|
||||
|
||||
vec3 color = vec3(0.0);
|
||||
uint sampleCount = 0u;
|
||||
for (float phi = 0.0; phi < TWO_PI; phi += consts.deltaPhi) {
|
||||
for (float theta = 0.0; theta < HALF_PI; theta += consts.deltaTheta) {
|
||||
vec3 tempVec = cos(phi) * right + sin(phi) * up;
|
||||
vec3 sampleVector = cos(theta) * N + sin(theta) * tempVec;
|
||||
color += texture(samplerEnv, sampleVector).rgb * cos(theta) * sin(theta);
|
||||
sampleCount++;
|
||||
}
|
||||
}
|
||||
outColor = vec4(PI * color / float(sampleCount), 1.0);
|
||||
}
|
|
@ -0,0 +1,158 @@
|
|||
#version 450
|
||||
|
||||
layout (set = 1, binding = 0) uniform sampler2D samplerColorMap;
|
||||
layout (set = 2, binding = 0) uniform sampler2D samplerNormalMap;
|
||||
//metal in chanel b, roughness in chanel g
|
||||
layout (set = 3, binding = 0) uniform sampler2D samplerMetalRoughMap;
|
||||
layout (set = 4, binding = 0) uniform sampler2D samplerEmissiveMap;
|
||||
|
||||
layout (set = 0, binding = 0) uniform UBOScene
|
||||
{
|
||||
mat4 projection;
|
||||
mat4 view;
|
||||
vec4 lightPos;
|
||||
vec4 viewPos;
|
||||
vec4 bFlagSet;
|
||||
} uboScene;
|
||||
layout (set = 0, binding = 1) uniform samplerCube samplerIrradiance;
|
||||
layout (set = 0, binding = 2) uniform sampler2D samplerBRDFLUT;
|
||||
layout (set = 0, binding = 3) uniform samplerCube prefilteredMap;
|
||||
|
||||
layout(set = 5, binding = 0) uniform UBOMaterial
|
||||
{
|
||||
vec3 emissiveFactor;
|
||||
vec4 baseColorFactor;
|
||||
} materials;
|
||||
|
||||
layout (location = 0) in vec3 inNormal;
|
||||
layout (location = 1) in vec3 inWorldPos;
|
||||
layout (location = 2) in vec2 inUV;
|
||||
layout (location = 3) in vec3 inTangent;
|
||||
|
||||
layout (location = 0) out vec4 outFragColor;
|
||||
|
||||
const float PI = 3.14159265359;
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
float D_GGX(float dotNH, float roughness)
|
||||
{
|
||||
float alpha = roughness * roughness;
|
||||
float alpha2 = alpha * alpha;
|
||||
float denom = dotNH * dotNH * (alpha2 - 1.0) + 1.0;
|
||||
return (alpha2)/(PI * denom*denom);
|
||||
}
|
||||
|
||||
// Geometric Shadowing function --------------------------------------
|
||||
float G_SchlicksmithGGX(float dotNL, float dotNV, float roughness)
|
||||
{
|
||||
float r = (roughness + 1.0);
|
||||
float k = (r*r) / 8.0;
|
||||
float GL = dotNL / (dotNL * (1.0 - k) + k);
|
||||
float GV = dotNV / (dotNV * (1.0 - k) + k);
|
||||
return GL * GV;
|
||||
}
|
||||
|
||||
// Fresnel function ----------------------------------------------------
|
||||
vec3 F_Schlick(float cosTheta, vec3 F0)
|
||||
{
|
||||
return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0);
|
||||
}
|
||||
vec3 F_SchlickR(float cosTheta, vec3 F0, float roughness)
|
||||
{
|
||||
return F0 + (max(vec3(1.0 - roughness), F0) - F0) * pow(1.0 - cosTheta, 5.0);
|
||||
}
|
||||
|
||||
vec3 prefilteredReflection(vec3 R, float roughness)
|
||||
{
|
||||
const float MAX_REFLECTION_LOD = 9.0; // todo: param/const
|
||||
float lod = roughness * MAX_REFLECTION_LOD;
|
||||
float lodf = floor(lod);
|
||||
float lodc = ceil(lod);
|
||||
vec3 a = textureLod(prefilteredMap, R, lodf).rgb;
|
||||
vec3 b = textureLod(prefilteredMap, R, lodc).rgb;
|
||||
return mix(a, b, lod - lodf);
|
||||
}
|
||||
|
||||
vec3 specularContribution(vec3 L, vec3 V, vec3 N, vec3 F0, float metallic, float roughness, vec3 albedo)
|
||||
{
|
||||
// Precalculate vectors and dot products
|
||||
vec3 H = normalize (V + L);
|
||||
float dotNH = clamp(dot(N, H), 1e-4, 1.0);
|
||||
float dotNV = clamp(dot(N, V), 1e-4, 1.0);
|
||||
float dotNL = clamp(dot(N, L), 1e-4, 1.0);
|
||||
|
||||
// Light color fixed
|
||||
vec3 lightColor = vec3(1.0);
|
||||
|
||||
vec3 color = vec3(0.0);
|
||||
|
||||
if (dotNL > 0.0) {
|
||||
// D = Normal distribution (Distribution of the microfacets)
|
||||
float D = D_GGX(dotNH, roughness);
|
||||
// G = Geometric shadowing term (Microfacets shadowing)
|
||||
float G = G_SchlicksmithGGX(dotNL, dotNV, roughness);
|
||||
// F = Fresnel factor (Reflectance depending on angle of incidence)
|
||||
vec3 F = F_Schlick(dotNV, F0);
|
||||
vec3 spec = D * F * G / (4.0 * dotNL * dotNV + 0.001);
|
||||
vec3 kD = (vec3(1.0) - F) * (1.0 - metallic);
|
||||
color += (kD * albedo / PI + spec) * dotNL;
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void main()
|
||||
{
|
||||
vec3 N = normalize(inNormal);
|
||||
vec3 realN = N;
|
||||
if(uboScene.bFlagSet.x > 0.0) //Flag to Control Normal mapping
|
||||
{
|
||||
vec3 T = normalize(inTangent);
|
||||
vec3 B = cross(N, T);
|
||||
mat3 TBN = mat3(T, B, N);
|
||||
realN = TBN * normalize(texture(samplerNormalMap, inUV).rgb * 2.0 - vec3(1.0));
|
||||
}
|
||||
vec3 V = normalize(uboScene.viewPos.xyz - inWorldPos);
|
||||
vec2 roughMetalic = texture(samplerMetalRoughMap, inUV).gb;
|
||||
vec3 albedo = texture(samplerColorMap, inUV).rgb * materials.baseColorFactor.xyz;
|
||||
|
||||
vec3 Lo = vec3(0.0);
|
||||
|
||||
vec3 F0 = vec3(0.04);
|
||||
F0 = mix(F0, albedo, roughMetalic.y);
|
||||
|
||||
//for(int i = 0; i < lightLength; ++i)
|
||||
{
|
||||
vec3 L = normalize(uboScene.lightPos.xyz - inWorldPos);
|
||||
Lo += specularContribution(L, V, N, F0, roughMetalic.y, roughMetalic.x, albedo);
|
||||
}
|
||||
|
||||
vec3 R = reflect(-V, realN);
|
||||
vec2 brdf = texture(samplerBRDFLUT, vec2(max(dot(N, V), 0.0), roughMetalic.x)).rg;
|
||||
vec3 reflection = prefilteredReflection(R, roughMetalic.x).rgb;
|
||||
vec3 irradiance = texture(samplerIrradiance, N).rgb;
|
||||
|
||||
// Diffuse based on irradiance
|
||||
vec3 diffuse = irradiance * albedo;
|
||||
vec3 F = F_SchlickR(max(dot(N, V), 0.0), F0, roughMetalic.x);
|
||||
|
||||
// Specular reflectance
|
||||
vec3 specular = reflection * (F * brdf.x + brdf.y);
|
||||
|
||||
// Ambient part
|
||||
vec3 kD = 1.0 - F;
|
||||
kD *= 1.0 - roughMetalic.y;
|
||||
vec3 indirectRadiance = vec3(0.0);
|
||||
if(uboScene.bFlagSet.y > 0.0)
|
||||
{
|
||||
indirectRadiance = (kD * diffuse + specular);
|
||||
}
|
||||
|
||||
//Emissive color
|
||||
vec3 emissive = texture(samplerEmissiveMap, inUV).rgb;
|
||||
// Combine with ambient
|
||||
vec3 color = indirectRadiance + Lo + emissive * materials.emissiveFactor;
|
||||
|
||||
outFragColor = vec4(color, 1.0);
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
#version 450
|
||||
|
||||
layout (location = 0) in vec3 inPos;
|
||||
layout (location = 1) in vec3 inNormal;
|
||||
layout (location = 2) in vec2 inUV;
|
||||
layout (location = 3) in vec3 inColor;
|
||||
layout (location = 4) in vec3 inTangent;
|
||||
|
||||
layout (set = 0, binding = 0) uniform UBOScene
|
||||
{
|
||||
mat4 projection;
|
||||
mat4 view;
|
||||
vec4 lightPos;
|
||||
vec4 viewPos;
|
||||
vec4 bFlagSet;
|
||||
} uboScene;
|
||||
|
||||
layout(std430, set = 6, binding = 0) readonly buffer nodeMatrices
|
||||
{
|
||||
mat4 nodeMat[];
|
||||
};
|
||||
|
||||
layout (location = 0) out vec3 outNormal;
|
||||
layout (location = 1) out vec3 outWorldPos;
|
||||
layout (location = 2) out vec2 outUV;
|
||||
layout (location = 3) out vec3 outTangent;
|
||||
|
||||
void main()
|
||||
{
|
||||
int nodeId = int(inColor.z);
|
||||
mat4 mat = nodeMat[nodeId];
|
||||
outNormal = inNormal;
|
||||
outUV = inUV;
|
||||
outTangent = inTangent;
|
||||
outWorldPos = vec3(mat * vec4(inPos, 1.0));
|
||||
outNormal = transpose(inverse(mat3(mat))) * inNormal;
|
||||
gl_Position = uboScene.projection * uboScene.view * mat * vec4(inPos.xyz, 1.0);
|
||||
}
|
|
@ -0,0 +1,105 @@
|
|||
#version 450
|
||||
|
||||
layout (location = 0) in vec3 inPos;
|
||||
layout (location = 0) out vec4 outColor;
|
||||
|
||||
layout (binding = 0) uniform samplerCube samplerEnv;
|
||||
|
||||
layout(push_constant) uniform PushConsts {
|
||||
layout (offset = 64) float roughness;
|
||||
layout (offset = 68) uint numSamples;
|
||||
} consts;
|
||||
|
||||
const float PI = 3.1415926536;
|
||||
|
||||
// Based omn http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/
|
||||
float random(vec2 co)
|
||||
{
|
||||
float a = 12.9898;
|
||||
float b = 78.233;
|
||||
float c = 43758.5453;
|
||||
float dt= dot(co.xy ,vec2(a,b));
|
||||
float sn= mod(dt,3.14);
|
||||
return fract(sin(sn) * c);
|
||||
}
|
||||
|
||||
vec2 hammersley2d(uint i, uint N)
|
||||
{
|
||||
// Radical inverse based on http://holger.dammertz.org/stuff/notes_HammersleyOnHemisphere.html
|
||||
uint bits = (i << 16u) | (i >> 16u);
|
||||
bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
|
||||
bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
|
||||
bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
|
||||
bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
|
||||
float rdi = float(bits) * 2.3283064365386963e-10;
|
||||
return vec2(float(i) /float(N), rdi);
|
||||
}
|
||||
|
||||
// Based on http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_slides.pdf
|
||||
vec3 importanceSample_GGX(vec2 Xi, float roughness, vec3 normal)
|
||||
{
|
||||
// Maps a 2D point to a hemisphere with spread based on roughness
|
||||
float alpha = roughness * roughness;
|
||||
float phi = 2.0 * PI * Xi.x + random(normal.xz) * 0.1;
|
||||
float cosTheta = sqrt((1.0 - Xi.y) / (1.0 + (alpha*alpha - 1.0) * Xi.y));
|
||||
float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
|
||||
vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta);
|
||||
|
||||
// Tangent space
|
||||
vec3 up = abs(normal.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
|
||||
vec3 tangentX = normalize(cross(up, normal));
|
||||
vec3 tangentY = normalize(cross(normal, tangentX));
|
||||
|
||||
// Convert to world Space
|
||||
return normalize(tangentX * H.x + tangentY * H.y + normal * H.z);
|
||||
}
|
||||
|
||||
// Normal Distribution function
|
||||
float D_GGX(float dotNH, float roughness)
|
||||
{
|
||||
float alpha = roughness * roughness;
|
||||
float alpha2 = alpha * alpha;
|
||||
float denom = dotNH * dotNH * (alpha2 - 1.0) + 1.0;
|
||||
return (alpha2)/(PI * denom*denom);
|
||||
}
|
||||
|
||||
vec3 prefilterEnvMap(vec3 R, float roughness)
|
||||
{
|
||||
vec3 N = R;
|
||||
vec3 V = R;
|
||||
vec3 color = vec3(0.0);
|
||||
float totalWeight = 0.0;
|
||||
float envMapDim = float(textureSize(samplerEnv, 0).s);
|
||||
for(uint i = 0u; i < consts.numSamples; i++) {
|
||||
vec2 Xi = hammersley2d(i, consts.numSamples);
|
||||
vec3 H = importanceSample_GGX(Xi, roughness, N);
|
||||
vec3 L = 2.0 * dot(V, H) * H - V;
|
||||
float dotNL = clamp(dot(N, L), 0.0, 1.0);
|
||||
if(dotNL > 0.0) {
|
||||
// Filtering based on https://placeholderart.wordpress.com/2015/07/28/implementation-notes-runtime-environment-map-filtering-for-image-based-lighting/
|
||||
|
||||
float dotNH = clamp(dot(N, H), 0.0, 1.0);
|
||||
float dotVH = clamp(dot(V, H), 0.0, 1.0);
|
||||
|
||||
// Probability Distribution Function
|
||||
float pdf = D_GGX(dotNH, roughness) * dotNH / (4.0 * dotVH) + 0.0001;
|
||||
// Slid angle of current smple
|
||||
float omegaS = 1.0 / (float(consts.numSamples) * pdf);
|
||||
// Solid angle of 1 pixel across all cube faces
|
||||
float omegaP = 4.0 * PI / (6.0 * envMapDim * envMapDim);
|
||||
// Biased (+1.0) mip level for better result
|
||||
float mipLevel = roughness == 0.0 ? 0.0 : max(0.5 * log2(omegaS / omegaP) + 1.0, 0.0f);
|
||||
color += textureLod(samplerEnv, L, mipLevel).rgb * dotNL;
|
||||
totalWeight += dotNL;
|
||||
|
||||
}
|
||||
}
|
||||
return (color / totalWeight);
|
||||
}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 N = normalize(inPos);
|
||||
outColor = vec4(prefilterEnvMap(N, consts.roughness), 1.0);
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
#version 450
|
||||
|
||||
//#define ENABLE_TONE_MAPPING
|
||||
|
||||
layout (location = 0) in vec2 inUV;
|
||||
layout (location = 0) out vec4 outColor;
|
||||
|
||||
layout (set = 0, binding = 0) uniform sampler2D originColor;
|
||||
|
||||
vec3 Tonemap_ACES(const vec3 x) {
|
||||
// Narkowicz 2015, "ACES Filmic Tone Mapping Curve"
|
||||
// const float a = 2.51;
|
||||
// const float b = 0.03;
|
||||
// const float c = 2.43;
|
||||
// const float d = 0.59;
|
||||
// const float e = 0.14;
|
||||
// return clamp( (x*(a*x+b))/(x*(c*x+d)+e), vec3(0.0), vec3(1.0));
|
||||
|
||||
//ACES RRT/ODT curve fit courtesy of Stephen Hill
|
||||
vec3 a = x * (x + 0.0245786) - 0.000090537;
|
||||
vec3 b = x * (0.983729 * x + 0.4329510) + 0.238081;
|
||||
return a / b;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 color = texture(originColor, inUV).rgb;
|
||||
#ifdef ENABLE_TONE_MAPPING
|
||||
color = Tonemap_ACES(color);
|
||||
#endif
|
||||
const float invGamma = 0.45454545;
|
||||
color = pow(color, vec3(invGamma));
|
||||
outColor = vec4(color, 1.0f);
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
// Copyright 2020 Google LLC
|
||||
|
||||
Texture2D textureColorMap : register(t0, space1);
|
||||
SamplerState samplerColorMap : register(s0, space1);
|
||||
|
||||
struct PushConsts {
|
||||
float4x4 model;
|
||||
};
|
||||
[[vk::push_constant]] PushConsts primitive;
|
||||
|
||||
struct VSOutput
|
||||
{
|
||||
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||
[[vk::location(1)]] float3 Color : COLOR0;
|
||||
[[vk::location(2)]] float2 UV : TEXCOORD0;
|
||||
[[vk::location(3)]] float3 ViewVec : TEXCOORD1;
|
||||
[[vk::location(4)]] float3 LightVec : TEXCOORD2;
|
||||
};
|
||||
|
||||
float4 main(VSOutput input) : SV_TARGET
|
||||
{
|
||||
float4 color = textureColorMap.Sample(samplerColorMap, input.UV) * float4(input.Color, 1.0);
|
||||
|
||||
float3 N = normalize(input.Normal);
|
||||
float3 L = normalize(input.LightVec);
|
||||
float3 V = normalize(input.ViewVec);
|
||||
float3 R = reflect(L, N);
|
||||
float3 diffuse = max(dot(N, L), 0.0) * input.Color;
|
||||
float3 specular = pow(max(dot(R, V), 0.0), 16.0) * float3(0.75, 0.75, 0.75);
|
||||
return float4(diffuse * color.rgb + specular, 1.0);
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
// Copyright 2020 Google LLC
|
||||
|
||||
struct VSInput
|
||||
{
|
||||
[[vk::location(0)]] float3 Pos : POSITION0;
|
||||
[[vk::location(1)]] float3 Normal : NORMAL0;
|
||||
[[vk::location(2)]] float2 UV : TEXCOORD0;
|
||||
[[vk::location(3)]] float3 Color : COLOR0;
|
||||
};
|
||||
|
||||
struct UBO
|
||||
{
|
||||
float4x4 projection;
|
||||
float4x4 view;
|
||||
float4 lightPos;
|
||||
float4 viewPos;
|
||||
};
|
||||
|
||||
cbuffer ubo : register(b0) { UBO ubo; }
|
||||
|
||||
struct PushConsts {
|
||||
float4x4 model;
|
||||
};
|
||||
[[vk::push_constant]] PushConsts primitive;
|
||||
|
||||
struct VSOutput
|
||||
{
|
||||
float4 Pos : SV_POSITION;
|
||||
[[vk::location(0)]] float3 Normal : NORMAL0;
|
||||
[[vk::location(1)]] float3 Color : COLOR0;
|
||||
[[vk::location(2)]] float2 UV : TEXCOORD0;
|
||||
[[vk::location(3)]] float3 ViewVec : TEXCOORD1;
|
||||
[[vk::location(4)]] float3 LightVec : TEXCOORD2;
|
||||
};
|
||||
|
||||
VSOutput main(VSInput input)
|
||||
{
|
||||
VSOutput output = (VSOutput)0;
|
||||
output.Normal = input.Normal;
|
||||
output.Color = input.Color;
|
||||
output.UV = input.UV;
|
||||
output.Pos = mul(ubo.projection, mul(ubo.view, mul(primitive.model, float4(input.Pos.xyz, 1.0))));
|
||||
|
||||
float4 pos = mul(ubo.view, float4(input.Pos, 1.0));
|
||||
output.Normal = mul((float3x3)ubo.view, input.Normal);
|
||||
output.LightVec = ubo.lightPos.xyz - pos.xyz;
|
||||
output.ViewVec = ubo.viewPos.xyz - pos.xyz;
|
||||
return output;
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
{
|
||||
"asset" : {
|
||||
"generator" : "Khronos glTF Blender I/O v1.0.5",
|
||||
"version" : "2.0"
|
||||
},
|
||||
"scene" : 0,
|
||||
"scenes" : [
|
||||
{
|
||||
"name" : "Scene",
|
||||
"nodes" : [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes" : [
|
||||
{
|
||||
"name" : "Light",
|
||||
"rotation" : [
|
||||
0.16907575726509094,
|
||||
0.7558803558349609,
|
||||
-0.27217137813568115,
|
||||
0.570947527885437
|
||||
],
|
||||
"translation" : [
|
||||
4.076245307922363,
|
||||
5.903861999511719,
|
||||
-1.0054539442062378
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "Camera",
|
||||
"rotation" : [
|
||||
0.483536034822464,
|
||||
0.33687159419059753,
|
||||
-0.20870360732078552,
|
||||
0.7804827094078064
|
||||
],
|
||||
"translation" : [
|
||||
7.358891487121582,
|
||||
4.958309173583984,
|
||||
6.925790786743164
|
||||
]
|
||||
},
|
||||
{
|
||||
"mesh" : 0,
|
||||
"name" : "cube",
|
||||
"rotation" : [
|
||||
0.7071068286895752,
|
||||
0,
|
||||
0,
|
||||
0.7071067094802856
|
||||
]
|
||||
}
|
||||
],
|
||||
"materials" : [
|
||||
{
|
||||
"doubleSided" : true,
|
||||
"name" : "Default OBJ",
|
||||
"pbrMetallicRoughness" : {
|
||||
"baseColorFactor" : [
|
||||
0.800000011920929,
|
||||
0.800000011920929,
|
||||
0.800000011920929,
|
||||
1
|
||||
],
|
||||
"metallicFactor" : 0,
|
||||
"roughnessFactor" : 0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes" : [
|
||||
{
|
||||
"name" : "cube",
|
||||
"primitives" : [
|
||||
{
|
||||
"attributes" : {
|
||||
"POSITION" : 0,
|
||||
"NORMAL" : 1,
|
||||
"TEXCOORD_0" : 2
|
||||
},
|
||||
"indices" : 3,
|
||||
"material" : 0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"accessors" : [
|
||||
{
|
||||
"bufferView" : 0,
|
||||
"componentType" : 5126,
|
||||
"count" : 24,
|
||||
"max" : [
|
||||
5,
|
||||
5,
|
||||
5
|
||||
],
|
||||
"min" : [
|
||||
-5,
|
||||
-5,
|
||||
-5
|
||||
],
|
||||
"type" : "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView" : 1,
|
||||
"componentType" : 5126,
|
||||
"count" : 24,
|
||||
"type" : "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView" : 2,
|
||||
"componentType" : 5126,
|
||||
"count" : 24,
|
||||
"type" : "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView" : 3,
|
||||
"componentType" : 5123,
|
||||
"count" : 36,
|
||||
"type" : "SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews" : [
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 288,
|
||||
"byteOffset" : 0
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 288,
|
||||
"byteOffset" : 288
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 192,
|
||||
"byteOffset" : 576
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 72,
|
||||
"byteOffset" : 768
|
||||
}
|
||||
],
|
||||
"buffers" : [
|
||||
{
|
||||
"byteLength" : 840,
|
||||
"uri" : "data:application/octet-stream;base64,AACgwAAAoMAAAKBAAACgwAAAoMAAAKDAAACgQAAAoMAAAKDAAACgQAAAoMAAAKBAAACgwAAAoEAAAKBAAACgQAAAoEAAAKBAAACgQAAAoEAAAKDAAACgwAAAoEAAAKDAAACgwAAAoMAAAKBAAACgQAAAoMAAAKBAAACgQAAAoEAAAKBAAACgwAAAoEAAAKBAAACgQAAAoMAAAKBAAACgQAAAoMAAAKDAAACgQAAAoEAAAKDAAACgQAAAoEAAAKBAAACgQAAAoMAAAKDAAACgwAAAoMAAAKDAAACgwAAAoEAAAKDAAACgQAAAoEAAAKDAAACgwAAAoMAAAKDAAACgwAAAoMAAAKBAAACgwAAAoEAAAKBAAACgwAAAoEAAAKDAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAEVFJOAAAgL8uvTuz311IuAAAgL8uvTuzEVFJuAAAgD8uvTuz311IOAAAgD8uvTuzLr07swAAgL8RUUm4Lr07swAAgL/fXUg4Lr07swAAgD8RUUk4Lr07swAAgD/fXUi4EVFJuAAAgL8uvTsz311IOAAAgL8uvTszEVFJOAAAgD8uvTsz311IuAAAgD8uvTszLr07MwAAgL8RUUk4Lr07MwAAgL/fXUi4Lr07MwAAgD8RUUm4Lr07MwAAgD/fXUg4AACAPwAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AACAPwAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AACAPwAAgD8AAIA/AAAAAAAAAAAAAAAAAAABAAIAAgADAAAABAAFAAYABgAHAAQACAAJAAoACgALAAgADAANAA4ADgAPAAwAEAARABIAEgATABAAFAAVABYAFgAXABQA"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
"asset" : {
|
||||
"generator" : "Khronos glTF Blender I/O v1.2.75",
|
||||
"version" : "2.0"
|
||||
},
|
||||
"scene" : 0,
|
||||
"scenes" : [
|
||||
{
|
||||
"name" : "Scene",
|
||||
"nodes" : [
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes" : [
|
||||
{
|
||||
"mesh" : 0,
|
||||
"name" : "Cube",
|
||||
"scale" : [
|
||||
15,
|
||||
15,
|
||||
15
|
||||
],
|
||||
"translation" : [
|
||||
0,
|
||||
12.617369651794434,
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"meshes" : [
|
||||
{
|
||||
"name" : "Cube.001",
|
||||
"primitives" : [
|
||||
{
|
||||
"attributes" : {
|
||||
"POSITION" : 0,
|
||||
"NORMAL" : 1,
|
||||
"TANGENT" : 2,
|
||||
"TEXCOORD_0" : 3
|
||||
},
|
||||
"indices" : 4
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"accessors" : [
|
||||
{
|
||||
"bufferView" : 0,
|
||||
"componentType" : 5126,
|
||||
"count" : 16,
|
||||
"max" : [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"min" : [
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"type" : "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView" : 1,
|
||||
"componentType" : 5126,
|
||||
"count" : 16,
|
||||
"type" : "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView" : 2,
|
||||
"componentType" : 5126,
|
||||
"count" : 16,
|
||||
"type" : "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView" : 3,
|
||||
"componentType" : 5126,
|
||||
"count" : 16,
|
||||
"type" : "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView" : 4,
|
||||
"componentType" : 5123,
|
||||
"count" : 24,
|
||||
"type" : "SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews" : [
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 192,
|
||||
"byteOffset" : 0
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 192,
|
||||
"byteOffset" : 192
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 256,
|
||||
"byteOffset" : 384
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 128,
|
||||
"byteOffset" : 640
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 48,
|
||||
"byteOffset" : 768
|
||||
}
|
||||
],
|
||||
"buffers" : [
|
||||
{
|
||||
"byteLength" : 816,
|
||||
"uri" : "data:application/octet-stream;base64,AACAvwAAgL8AAIA/AACAvwAAgD8AAIC/AACAvwAAgD8AAIA/AACAvwAAgL8AAIC/AACAPwAAgD8AAIC/AACAvwAAgD8AAIC/AACAPwAAgL8AAIC/AACAPwAAgD8AAIA/AACAPwAAgD8AAIC/AACAPwAAgL8AAIA/AACAvwAAgL8AAIC/AACAvwAAgL8AAIA/AACAvwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIA/AACAPwAAgL8AAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAIAAAIA/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAIA/AACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAAACAPwAAAAAAAACAAAAAgAAAAIAAAIA/AACAvwAAAAAAAACAAAAAgAAAgD8AAACAAAAAAAAAgD8AAACAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAvwAAgD8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAgD8AAIA/AAAAAAGg0TgAwNE4dPl/P3P5fz9y+X8/AMDROAAAAAAAAIA/AACAPwAAAAAAAIA/AACAPwAAAAAAAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/N8DROHP5fz8AAAAAAAAAAAAAgD8AAIA/AAABAAIAAwAEAAUABgAHAAgACQAKAAsAAAAMAAEAAwANAAQABgAOAAcACQAPAAoA"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
"asset" : {
|
||||
"generator" : "Khronos glTF Blender I/O v1.2.75",
|
||||
"version" : "2.0"
|
||||
},
|
||||
"scene" : 0,
|
||||
"scenes" : [
|
||||
{
|
||||
"name" : "Scene",
|
||||
"nodes" : [
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes" : [
|
||||
{
|
||||
"mesh" : 0,
|
||||
"name" : "Plane",
|
||||
"scale" : [
|
||||
4,
|
||||
4,
|
||||
4
|
||||
],
|
||||
"translation" : [
|
||||
0,
|
||||
-2.3499999046325684,
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"meshes" : [
|
||||
{
|
||||
"name" : "Plane",
|
||||
"primitives" : [
|
||||
{
|
||||
"attributes" : {
|
||||
"POSITION" : 0,
|
||||
"NORMAL" : 1,
|
||||
"TANGENT" : 2,
|
||||
"TEXCOORD_0" : 3
|
||||
},
|
||||
"indices" : 4
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"accessors" : [
|
||||
{
|
||||
"bufferView" : 0,
|
||||
"componentType" : 5126,
|
||||
"count" : 4,
|
||||
"max" : [
|
||||
5,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"min" : [
|
||||
-5,
|
||||
0,
|
||||
-5
|
||||
],
|
||||
"type" : "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView" : 1,
|
||||
"componentType" : 5126,
|
||||
"count" : 4,
|
||||
"type" : "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView" : 2,
|
||||
"componentType" : 5126,
|
||||
"count" : 4,
|
||||
"type" : "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView" : 3,
|
||||
"componentType" : 5126,
|
||||
"count" : 4,
|
||||
"type" : "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView" : 4,
|
||||
"componentType" : 5123,
|
||||
"count" : 6,
|
||||
"type" : "SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews" : [
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 48,
|
||||
"byteOffset" : 0
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 48,
|
||||
"byteOffset" : 48
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 64,
|
||||
"byteOffset" : 96
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 32,
|
||||
"byteOffset" : 160
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 12,
|
||||
"byteOffset" : 192
|
||||
}
|
||||
],
|
||||
"buffers" : [
|
||||
{
|
||||
"byteLength" : 204,
|
||||
"uri" : "data:application/octet-stream;base64,AACgQAAAAAAAAKBAAACgQAAAAAAAAKDAAACgwAAAAAAAAKDAAACgwAAAAAAAAKBAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAACAPwAAAADXCcCzAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAANcJwLMAAIA/AACAPwAAAADXCUC0AACAP3H5H0By+R9AcfkfQObyv7/j8r+/5vK/v+Pyv79v+R9AAAABAAIAAAACAAMA"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,140 @@
|
|||
{
|
||||
"asset" : {
|
||||
"generator" : "Khronos glTF Blender I/O v1.2.75",
|
||||
"version" : "2.0"
|
||||
},
|
||||
"scene" : 0,
|
||||
"scenes" : [
|
||||
{
|
||||
"name" : "Scene",
|
||||
"nodes" : [
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes" : [
|
||||
{
|
||||
"mesh" : 0,
|
||||
"name" : "plane",
|
||||
"rotation" : [
|
||||
0.7071068286895752,
|
||||
0,
|
||||
0,
|
||||
0.7071067094802856
|
||||
]
|
||||
}
|
||||
],
|
||||
"materials" : [
|
||||
{
|
||||
"doubleSided" : true,
|
||||
"emissiveFactor" : [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"name" : "Default OBJ",
|
||||
"pbrMetallicRoughness" : {
|
||||
"baseColorFactor" : [
|
||||
0.800000011920929,
|
||||
0.800000011920929,
|
||||
0.800000011920929,
|
||||
1
|
||||
],
|
||||
"metallicFactor" : 0,
|
||||
"roughnessFactor" : 0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes" : [
|
||||
{
|
||||
"name" : "plane",
|
||||
"primitives" : [
|
||||
{
|
||||
"attributes" : {
|
||||
"POSITION" : 0,
|
||||
"NORMAL" : 1,
|
||||
"TANGENT" : 2,
|
||||
"TEXCOORD_0" : 3
|
||||
},
|
||||
"indices" : 4,
|
||||
"material" : 0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"accessors" : [
|
||||
{
|
||||
"bufferView" : 0,
|
||||
"componentType" : 5126,
|
||||
"count" : 25,
|
||||
"max" : [
|
||||
2.5,
|
||||
2.5,
|
||||
-2.046362990897662e-14
|
||||
],
|
||||
"min" : [
|
||||
-2.5,
|
||||
-2.5,
|
||||
-2.046362990897662e-14
|
||||
],
|
||||
"type" : "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView" : 1,
|
||||
"componentType" : 5126,
|
||||
"count" : 25,
|
||||
"type" : "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView" : 2,
|
||||
"componentType" : 5126,
|
||||
"count" : 25,
|
||||
"type" : "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView" : 3,
|
||||
"componentType" : 5126,
|
||||
"count" : 25,
|
||||
"type" : "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView" : 4,
|
||||
"componentType" : 5123,
|
||||
"count" : 96,
|
||||
"type" : "SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews" : [
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 300,
|
||||
"byteOffset" : 0
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 300,
|
||||
"byteOffset" : 300
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 400,
|
||||
"byteOffset" : 600
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 200,
|
||||
"byteOffset" : 1000
|
||||
},
|
||||
{
|
||||
"buffer" : 0,
|
||||
"byteLength" : 192,
|
||||
"byteOffset" : 1200
|
||||
}
|
||||
],
|
||||
"buffers" : [
|
||||
{
|
||||
"byteLength" : 1392,
|
||||
"uri" : "data:application/octet-stream;base64,AAAgwAAAoD/rUbioAAAgwAAAIEDrUbioAACgvwAAoD/rUbioAACgvwAAIEDrUbioAAAAAAAAoD/rUbioAAAAAAAAIEDrUbioAACgPwAAoD/rUbioAACgPwAAIEDrUbioAAAgQAAAoD/rUbioAAAgQAAAIEDrUbioAAAgwPLne53rUbioAACgv/Lne53rUbioAAAAAPLne53rUbioAACgP/Lne53rUbioAAAgQPLne53rUbioAAAgwAAAoL/rUbioAACgvwAAoL/rUbioAAAAAAAAoL/rUbioAACgPwAAoL/rUbioAAAgQAAAoL/rUbioAAAgwAAAIMDrUbioAACgvwAAIMDrUbioAAAAAAAAIMDrUbioAACgPwAAIMDrUbioAAAgQAAAIMDrUbioAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAv48GALQAAACAAACAPwAAgL8AAAAAAAAAgAAAgD8AAIC/NQigtAAAAIAAAIA/AACAv0RgVbQAAACAAACAPwAAgL82CKC0AAAAgAAAgD8AAIC/AAAAAAAAAIAAAIA/AACAv9MJwDQAAACAAACAPwAAgL86YFU0AAAAgAAAgD8AAIC/MQggNQAAAIAAAIA/AACAvwAAAAAAAACAAACAPwAAgL8sXAW1AAAAgAAAgD8AAIC/2glAtAAAAIAAAIA/AACAv0hg1bMAAACAAACAPwAAgL9qsyo0AAAAgAAAgD8AAIC/+1wVNQAAAIAAAIA/AACAv+ph9bQAAACAAACAPwAAgL9jB5C0AAAAgAAAgD8AAIC/AAAAAAAAAIAAAIA/AACAv2uzqrMAAACAAACAPwAAgL+0WLepAAAAgAAAgD8AAIC/ZbMqtAAAAIAAAIA/AACAv9cJQLQAAACAAACAPwAAgL8AAAAAAAAAgAAAgD8AAIC/a7OqswAAAIAAAIA/AACAv2qzKrQAAACAAACAPyX2/z+42H++Jfb/P1jsf78S+58/uNh/vhD7nz9Y7H+/9v//PpDYf77w//8+WOx/v7TYf76Q2H++wNh/vljsf79S7H+/uNh/vlTsf79Y7H+/Jfb/P/r//z4S+58/AwAAP/b//z4DAAA/sNh/vgMAAD9S7H+/+v//Pin2/z8S+58/EvufPxb7nz/5//8+FvufP6jYf74W+58/Tux/vxf7nz8p9v8/Kvb/PxP7nz8r9v8/////Piv2/z+o2H++K/b/P07sf78s9v8/AAABAAIAAwACAAEAAgADAAQABQAEAAMABAAFAAYABwAGAAUABgAHAAgACQAIAAcACgAAAAsAAgALAAAACwACAAwABAAMAAIADAAEAA0ABgANAAQADQAGAA4ACAAOAAYADwAKABAACwAQAAoAEAALABEADAARAAsAEQAMABIADQASAAwAEgANABMADgATAA0AFAAPABUAEAAVAA8AFQAQABYAEQAWABAAFgARABcAEgAXABEAFwASABgAEwAYABIA"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
Model Information:
|
||||
* title: Flan_Kawaii
|
||||
* source: https://sketchfab.com/3d-models/flan-kawaii-0f9fd4b5fce04594a4fc53e26a40f3b6
|
||||
* author: Mafer Luna (https://sketchfab.com/Fernanda.Aldaco.de.Luna)
|
||||
|
||||
Model License:
|
||||
* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
|
||||
* requirements: Author must be credited. Commercial use is allowed.
|
||||
|
||||
If you use this 3D model in your project be sure to copy paste this credit wherever you share it:
|
||||
This work is based on "Flan_Kawaii" (https://sketchfab.com/3d-models/flan-kawaii-0f9fd4b5fce04594a4fc53e26a40f3b6) by Mafer Luna (https://sketchfab.com/Fernanda.Aldaco.de.Luna) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
|
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 605 B |