When using Texture Color Mesh Paint, is there any way to use nearest neighbor filtering?

When using texture color for mesh paint the sampling appears to be locked to bilinear filtering.

The texture asset itself has no option to set the filtering method, but it does have an option to set the texture group so I figured I could use that… but that doesn’t work either. It displays correctly in the texture previewer but when shaded on screen it continues to use bilinear filtering to sample the texture.

Does anyone know if it is possible to overcome this other than doing the stupid multiply, floor, divide inside the material? (This approach is a pain because meshpaint doesn’t expose the texture resolution to the material graph, but more importantly it adds cost and should just be completely unnecessary…)

Well, figured it out.. kinda. You can just rip the generated HLSL out of the node and sample it yourself with point filtering:

VTPageTableResult VTTBR = TextureLoadVirtualPageTable(VIRTUALTEXTURE_PAGETABLE_0, VTPageTableUniform_Unpack(VIRTUALTEXTURE_PAGETABLE_UNIFORM_0), DERIV_BASE_VALUE(Parameters.TexCoords[0].xy), VTADDRESSMODE_WRAP, VTADDRESSMODE_WRAP, View.MaterialTextureMipBias, Parameters.SvPosition.xy, 0U + LIGHTMAP_VT_ENABLED, Parameters.VirtualTextureFeedback);

return TextureVirtualSample(Scene.MeshPaint.PhysicalTexture, View.SharedPointClampedSampler, VTTBR, 0, VTUniform_Unpack(Scene.MeshPaint.PackedUniform));

VT sampling continues to confuse me, but it works which is what matters I guess