一个移动端可用的水晶体材质

 

在SD中制作贴图

 

基础色+环境光遮蔽

细节纹理

自发光+粗糙度

法线

二、Unity shader

  1. 基础光照

整体思路:

finalRGB = 环境漫反射+光照漫反射+环境镜面反射+光照镜面反射+自发光

环境漫反射:

half3 ambient = _AmbientCol;

光照漫反射:兰伯特+ 阴影

half3 baseCol = var_MainTex.rgb * ambient ;

half lambert = max(0.0,nDotl);

half Shadow = LIGHT_ATTENUATION(i);

环境镜面反射:菲涅尔+反射探头 + ao

vrDirWS = BoxProjectedCubemapDirection(vrDirWS, i.posWS, unity_SpecCube0_ProbePosition, unity_SpecCube0_BoxMin, unity_SpecCube0_BoxMax);

half4 rgbm = UNITY_SAMPLE_TEXCUBE(unity_SpecCube0, vrDirWS);

half3 reflection = DecodeHDR(rgbm, unity_SpecCube0_HDR);

half3 fresnel = max(0.0,1-nDotv) * _FresnelPow * var_MainTex.rgb;

half3 diffenvCol = aocol * _AOInt + fresnel * _AmbientCol;

光照镜面反射:blinn-phong

half BlinPhong = pow(max(0.0,nDoth),rough * _SpecPow);

half spec = BlinPhong * max(0.0,nDotl);

spec = spec * _SpecInt;

half3 DirSpec = var_MainTex.rgb * spec * _LightColor0;

自发光:

half3 emis = var_EmitTex.r * _EmitInt;

  1. 视差贴图

为了增加模型的通透感,采样了两次视差贴图

half BumpColor= tex2D(_MainTex, (-i.uv0 * _MainTex_ST.xy + _MainTex_ST.zw) + i.offset*0.4).a;

diff = diff + BumpColor;

第一次采样了一次ao,让水晶表面的裂纹层次更加丰富

第二次采样增加了水晶内部的杂质颗粒

三、性能优化

1.尽可能的合并贴图减少贴图采样次数

2.贴图尺寸不超过512

3.不使用HDR颜色参数

4.不使用高等精度的数据类型

junyangtong/Toon_crystal: 一个移动端可用的水晶体材质 (github.com)

Vite是一个现代的前端构建工具,它采用了渐进式渲染和SSR(服务器端渲染)的技术,旨在提供快速的开发体验。如果你想使用Vite搭建一个React移动端项目,你可以按照以下步骤进行: 1. **安装依赖**: - 首先确保已安装Node.js和npm或yarn。运行 `npm install -g create-react-app` 或 `npx create-react-g vite @vitejs/plugin-react`。 2. **创建项目**: - 创建一个新的React应用,但选择Vite作为构建工具:`npx create-react-app my-app --template=typescript-vite` 如果需要TypeScript支持,或者直接使用默认模板:`npx create-react-app my-app`. 3. **配置Vite**: - 进入项目目录:`cd my-app` - 更新`vite.config.ts` 文件,配置React插件和其他Vite特性,例如处理CSS、预加载等。例如添加: ```javascript import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [react()], build: { target: 'esnext', // 根据需要选择移动设备的目标环境 minify: true, // 开启代码压缩 outDir: 'dist', // 输出目录 }, }); ``` 4. **修改入口文件**: - 删除`src/index.js`,因为Vite会自动查找`src/main.tsx`或`src/index.html`作为入口。如果使用TypeScript,则可能会是`src/main.tsx`。 5. **编写React组件**: - 开始编写适用于移动端的React组件,并按照Vite的热更新模式开发。Vite能实时刷新浏览器,无需手动刷新。 6. **部署到移动端**: - 为了将应用部署到Android或iOS设备,通常通过使用像`expo-cli`这样的工具(对于React Native)或者是直接打包成WebAssembly模块,然后在App壳中嵌套运行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值