{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/mobilenerf-exploiting-the-polygon","title":"MobileNeRF: Exploiting the Polygon Rasterization Pipeline for Efficient Neural Field Rendering on Mobile Architectures","arxiv_id":"2208.00277","date":"2022-07-30","proceeding":"CVPR 2023 1","authors":["Zhiqin Chen","Thomas Funkhouser","Peter Hedman","Andrea Tagliasacchi"],"abstract":"Neural Radiance Fields (NeRFs) have demonstrated amazing ability to synthesize images of 3D scenes from novel views. However, they rely upon specialized volumetric rendering algorithms based on ray marching that are mismatched to the capabilities of widely deployed graphics hardware. This paper introduces a new NeRF representation based on textured polygons that can synthesize novel images efficiently with standard rendering pipelines. The NeRF is represented as a set of polygons with textures representing binary opacities and feature vectors. Traditional rendering of the polygons with a z-buffer yields an image with features at every pixel, which are interpreted by a small, view-dependent MLP running in a fragment shader to produce a final pixel color. This approach enables NeRFs to be rendered with the traditional polygon rasterization pipeline, which provides massive pixel-level parallelism, achieving interactive frame rates on a wide range of compute platforms, including mobile phones.","url_abs":"https://arxiv.org/abs/2208.00277v5","url_pdf":"https://arxiv.org/pdf/2208.00277v5.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"mobilenerf-exploiting-the-polygon","repo_url":"https://github.com/google-research/jax3d","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"nerf","task_name":"NeRF"},{"task_slug":"novel-view-synthesis","task_name":"Novel View Synthesis"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/novel-view-synthesis-on-llff","task":"Novel View Synthesis","dataset":"LLFF","model":"JAXNeRF","rank_in_archive_order":2,"of":15,"metrics":{"LPIPS":"0.173","PSNR":"26.92","SSIM":"0.831"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-llff","task":"Novel View Synthesis","dataset":"LLFF","model":"NeRF","rank_in_archive_order":7,"of":15,"metrics":{"LPIPS":"0.25","PSNR":"26.5","SSIM":"0.811"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-llff","task":"Novel View Synthesis","dataset":"LLFF","model":"MobileNeRF","rank_in_archive_order":10,"of":15,"metrics":{"LPIPS":"0.183","PSNR":"25.91","SSIM":"0.825"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-llff","task":"Novel View Synthesis","dataset":"LLFF","model":"SNeRG","rank_in_archive_order":12,"of":15,"metrics":{"LPIPS":"0.183","PSNR":"25.63","SSIM":"0.818"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-mip-nerf-360","task":"Novel View Synthesis","dataset":"Mip-NeRF 360","model":"NeRF++","rank_in_archive_order":11,"of":14,"metrics":{"LPIPS":"0.427","PSNR":"22.76","SSIM":"0.548"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-mip-nerf-360","task":"Novel View Synthesis","dataset":"Mip-NeRF 360","model":"MobileNeRF","rank_in_archive_order":12,"of":14,"metrics":{"LPIPS":"0.47","PSNR":"21.95","SSIM":"0.47"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-mip-nerf-360","task":"Novel View Synthesis","dataset":"Mip-NeRF 360","model":"NeRF","rank_in_archive_order":13,"of":14,"metrics":{"LPIPS":"0.515","PSNR":"21.46","SSIM":"0.458"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-nerf","task":"Novel View Synthesis","dataset":"NeRF","model":"JAXNeRF","rank_in_archive_order":8,"of":12,"metrics":{"LPIPS":"0.051","PSNR":"31.65","SSIM":"0.952"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-nerf","task":"Novel View Synthesis","dataset":"NeRF","model":"NeRF","rank_in_archive_order":9,"of":12,"metrics":{"LPIPS":"0.081","PSNR":"31","SSIM":"0.947"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-nerf","task":"Novel View Synthesis","dataset":"NeRF","model":"MobileNeRF","rank_in_archive_order":10,"of":12,"metrics":{"LPIPS":"0.062","PSNR":"30.9","SSIM":"0.947"},"uses_additional_data":false},{"leaderboard":"/sota/novel-view-synthesis-on-nerf","task":"Novel View Synthesis","dataset":"NeRF","model":"SNeRG","rank_in_archive_order":11,"of":12,"metrics":{"LPIPS":"0.05","PSNR":"30.38","SSIM":"0.95"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2208.00277","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2208.00277"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/google-research/jax3d","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":9},"by_repo_kind":{"official":{"samples":9,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"3c330a09b474ddee","entry":"decorator_with_option","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/py_utils.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/py_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3c330a09b474ddee"}},{"code_sha256_prefix":"2f66a837d8b9c377","entry":"get_coords_grid","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/geo_utils.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/geo_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2f66a837d8b9c377"}},{"code_sha256_prefix":"4f8a6fa7be26cdeb","entry":"get_normalizer_from_time_unit_str","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/chronometer.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/chronometer.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4f8a6fa7be26cdeb"}},{"code_sha256_prefix":"a51a0695d8442d5a","entry":"lch_from_oklab","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/plot_segmentation.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/plot_segmentation.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a51a0695d8442d5a"}},{"code_sha256_prefix":"4c919b9133a99d5f","entry":"oklab_from_rgb","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/plot_segmentation.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/plot_segmentation.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4c919b9133a99d5f"}},{"code_sha256_prefix":"05e7896890bec385","entry":"polar_to_cartesian","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/random.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/random.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"05e7896890bec385"}},{"code_sha256_prefix":"781aed1274c8408f","entry":"rgb_from_oklab","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/plot_segmentation.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/plot_segmentation.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"781aed1274c8408f"}},{"code_sha256_prefix":"bf728d37bde131be","entry":"uniform_points_on_sphere","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/random.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/random.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bf728d37bde131be"}},{"code_sha256_prefix":"6122daa0179cc39a","entry":"uniform_polar_points_on_sphere","repo":"google-research/jax3d","repo_kind":"official","path":"jax3d/utils/random.py","file_url":"https://github.com/google-research/jax3d/blob/HEAD/jax3d/utils/random.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6122daa0179cc39a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}